2010-05-27 20 views
0

je ce modèle simple Blog:IntegrityError avec les champs Booleand et 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) 

Lorsque j'insère un blog dans l'interface admin, je reçois cette erreur:

IntegrityError at /admin/blogs/blog/add/ 

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

Pourquoi ???

Répondre

0

Hmm. Odd bizarre. Ne peut pas dire pourquoi cela se produit parce que la valeur par défaut devrait signifier qu'il est toujours réglé, mais cela ne devrait fixer, si vous appliquez le changement de schéma correspondant/migration

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

+1

Je crois que vous ne pouvez pas avoir null = True sur BooleanField, vous devez utiliser [NullBooleanField] (http://docs.djangoproject.com/en/dev/ref/models/fields/#nullbooleanfield) –

+0

Si j'ajoute null = True, comme vous l'avez dit, j'obtiens cette erreur : Erreur: Un ou plusieurs modèles n'ont pas été validés: blogs.blog: "is_public": BooleanFeilds n'accepte pas les valeurs null. Utilisez un NullBooleanField à la place. Donc maintenant j'utilise NullBooleanFields et ça marche. Mais pourquoi je dois faire ça? C'est étrange: - \ – xRobot

+0

Ouais, désolé - rébus a clairement raison –