2011-01-10 1 views
0

J'essaie de créer un modèle Django pour le scénario suivant:Comment créer une relation de modèle dépendante dans Django

Il existe plusieurs clubs. Chaque club a un seul chef et plusieurs membres. Le leader est également membre.

Ce sont mes modèles jusqu'à présent:

class Club(models.Model): 
    name = models.CharField(max_length=50) 
    leader = models.ForeignKey('Member', related_name='+') 
class Member(models.Model): 
    name = models.CharField(max_length=50) 
    club = models.ForeignKey(Club) 

Dans l'interface d'administration, je ne peux pas ajouter un membre sans avoir d'abord un club, mais je ne peux pas faire un club sans créer un membre de désigner en tant que leader. J'ai essayé d'ajouter Blank = True à la relation leader ForeignKey, mais cela ne fonctionne toujours pas.

Comment dois-je créer les modèles pour la situation?

Merci d'avance!

Répondre

1

Créez une classe de modèle ClubLeader, avec des colonnes en tant que clés étrangères pour un club et un membre pour être le leader. Appliquer l'unicité pour les ID de membre Club + dans cette table pour vous assurer que vous n'avez pas plusieurs leaders. Supprimez le «leader» de votre classe Club.

Aussi, je ne rejoindrait pas un club qui aurait quelqu'un comme moi pour un membre (Groucho Marx)

0

Pour plus d'informations, Espace blanc = True ne signifie pas que le champ dans la base de données peut être nulle . Cela signifie seulement qu'un champ de formulaire peut être vide lors de l'utilisation d'un ModelForm (ou peut-être juste l'admin - soit/ou). Ce que vous voulez est un blank=True, null=True. Cela autorise une valeur nulle et une valeur vide dans le panneau formulaire/admin.

Je serais toujours d'accord avec la réponse de Spacedman. Fournir une table séparée qui se trouve «entre les deux». De cette façon, vous faites valoir que les membres doivent appartenir à un club.

Questions connexes