2009-05-10 14 views
4

Je crée mon propre modèle Group; Je ne parle pas du modèle intégré Group. Je veux que chaque groupe soit membre d'un autre groupe (c'est le parent), mais il y a le groupe "top" qui n'a pas de groupe parent.Je reçois "parent_id ne peut pas être NULL" lors de la création de mon modèle Django

L'interface d'administration ne me permet pas de créer un groupe sans entrer un parent. J'obtiens l'erreur personnel_group.parent_id may not be NULL. Mon modèle Group ressemble à ceci:

class Group(models.Model): 
    name = models.CharField(max_length=50) 
    parent = models.ForeignKey('self', blank=True, null=True) 
    order = models.IntegerField() 
    icon = models.ImageField(upload_to='groups', blank=True, null=True) 
    description = models.TextField(blank=True, null=True) 

Comment puis-je y arriver?

Merci.

+0

Donc en fait le titre devrait être: Pourquoi ne syncdb échec, quand j'ajoute en blanc = True, null = True à un champ de modèle –

Répondre

6

J'ai créé la base de données avant ajouté blank=True, null=True au parent définition du champ. syncdb ne peut pas gérer ce type de changement, donc Django n'a pas remarqué mes changements.

J'ai supprimé ma base de données et laissé syncdb en créer un autre et cela a bien fonctionné.

+3

Vous devriez envisager d'utiliser un outil de migration de schéma de base de données comme South. –

+0

est-il peut-être une meilleure façon de faire cela au lieu de supprimer l'ensemble de la DB? – niklasfi

+0

@niklasfi Si vous utilisez South, vous n'avez pas besoin de supprimer le db. –

0

évolution Django te sortir de ce genre de problème sans laisser tomber votre base de données complète