2010-05-27 41 views
0

我有這個簡單的博客模式:IntegrityError與Booleand場和PostgreSQL

class Blog(models.Model): 

    title = models.CharField(_('title'), max_length=60, blank=True, null=True) 
    body = models.TextField(_('body')) 
    user = models.ForeignKey(User) 
    is_public = models.BooleanField(_('is public'), default = True) 

當我插入管理界面博客,我得到這個錯誤:

IntegrityError at /admin/blogs/blog/add/ 

null value in column "is_public" violates not-null constraint 

爲什麼???

回答

0

嗯。奇怪的怪癖。不能說爲什麼它正在發生,因爲默認應該意味着它總是設置,但是這應該修復它,如果你申請相關的架構更改/遷移

is_public = models.BooleanField(_('is public'), default=True, null=True)

+1

我相信你不能有空=真在BooleanField上,您需要使用[NullBooleanField](http://docs.djangoproject.com/en/dev/ref/models/fields/#nullbooleanfield) – 2010-05-27 17:40:13

+0

如果我添加null = True,就像您說的那樣,我得到此錯誤: 錯誤:一個或多個模型未驗證: blogs.blog:「is_public」:BooleanFeilds不接受空值。改用NullBooleanField。所以現在我正在使用NullBooleanFields,它確實有效。但爲什麼我必須這樣做?這很奇怪: - \ – xRobot 2010-05-27 17:40:15

+0

是的,抱歉 - rebus顯然是對的 – 2010-05-27 21:03:20