Как создать зависимую модель отношений в Django - PullRequest
0 голосов
/ 10 января 2011

Я пытаюсь создать модель Django для следующего сценария:

Есть несколько клубов. В каждом клубе есть один лидер и несколько членов. Лидер также является членом.

Пока это мои модели:

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)

В интерфейсе администратора я не могу добавить участника без предварительного создания клуба, но я не могу создать клуб без создания члена, назначаемого в качестве лидера. Я попытался добавить Blank = True к лидеру ForeignKey, но он все еще не работает.

Как мне создать модели для ситуации?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 10 января 2011

Создайте класс модели ClubLeader, с колонками в качестве иностранных ключей для клуба и члена, который будет лидером.Обеспечьте уникальность идентификаторов членов клуба и членов этой таблицы, чтобы убедиться, что у вас нет нескольких лидеров.Удалите «лидера» из своего клубного класса.

Кроме того, я бы не вступил ни в один клуб, в котором кто-то вроде меня был бы членом (Граучо Маркс)

0 голосов
/ 10 января 2011

Для получения дополнительной информации, Blank = True не означает, что поле в базе данных может быть нулевым.Это означает только то, что поле формы может быть пустым при использовании ModelForm (или, возможно, только администратора - или / или).То, что вы хотите, это blank=True, null=True.Это допускает нулевое значение и пустое значение в форме / панели администратора.

Хотя я бы все равно согласился с ответом Spacedman.Предоставьте отдельную таблицу, которая находится между ними.Таким образом, вы обязуетесь, что члены должны принадлежать клубу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...