2010-10-06 20 views
0

J'ai un problème de poulet et d'oeuf ici. Premièrement, j'ai une classe userprofile qui s'appuie sur le modèle utilisateur par défaut de django.django: modèles avec touches inverses?

class UserProfile(models.Model): 
    def __unicode__(self): 
     return self.user.username 
    user = models.OneToOneField(User, unique=True) 
    exam = models.ForeignKey('questions.Exam', null=True) 

Ensuite, j'ai une classe d'examen

class Exam(models.Model): 
    def __unicode__(self): 
     return self.id 
    user = models.ForeignKey(UserProfile) 

Le UserProfile et les modèles d'examen sont dans différentes applications. Cependant, ils ont tous les deux des clés étrangères entre eux. Je connais son mauvais design, mais c'est mon exigence particulière dans mon cas. Cependant, la clé étrangère UserProfile à l'examen peut être nulle. Mais chaque fois que j'essaie de créer un examen dans Admin, j'obtiens une erreur en disant "UserProfile" est un champ obligatoire. Et quand j'essaye de créer l'utilisateur, l'inverse se produit. Y a-t-il un moyen de sortir de cette impasse? Ou devrais-je reconcevoir mon application?

Répondre

1

devrais-je reconcevoir mon application?

Presque certainement. Toutefois, ce problème réel est dû au fait que vous avez null=True, qui configure correctement la base de données pour autoriser null s sur le champ de clé étrangère, mais vous n'avez pas ajouté blank=True, qui est ce que Django utilise pour valider les entrées correctes. Ajoutez cela, et cette partie au moins devrait fonctionner.

+0

Cela a fonctionné. Mais je vais changer mon design et le rendre plus simple. Merci. – Neo