Прежде всего, я должен признать, что я совершенно новичок во всем этом программировании, но, поскольку я не мог найти подходящего решения, сделать это самостоятельно, и обучение кодированию, вероятно, является лучшим способом.
В любом случае, я пытаюсь создать приложение, чтобы показать различных обладателей титулов, чемпионаты и тому подобное. Прочитав документацию Django, я понял, что лучше использовать промежуточные модели. Мой старый файл models.py выглядит так:
class Person(models.Model):
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
[...]
class Team(models.Model):
name = models.CharField(max_length=64)
team_member_one = models.ForeignKey(Person)
team_member_two = models.ForeignKey(Person)
class Championship(models.Model):
name = models.CharField(max_length=128)
status = models.BooleanField(default=True)
class Titleholder(models.Model):
championship = models.ForeignKey(Championship)
date_won = models.DateField(null=True,blank=True)
date_lost = models.DateField(null=True,blank=True)
titleholder_one = models.ForeignKey(Person,related_name='titleholder_one',null=True,blank=True)
titleholder_two = models.ForeignKey(Person,related_name='titleholder_two',null=True,blank=True)
Чемпионаты могут быть выиграны как отдельными людьми, так и командами, в зависимости от того, одиночный это чемпионат или командный, поэтому мне пришлось использовать внешние ключи в классе Titleholder. Глядя на Django документации это просто кажется ложным. С другой стороны, мне, как новичку, промежуточная модель в примере просто никак не соответствует моей модели.
Короче говоря: может ли кто-нибудь указать мне правильное направление, как правильно построить модель? Примечание: это просто вопрос о том, как создавать модели и отображать их в админке Django, я даже не говорю о создании шаблонов на данный момент.
Помощь будет принята с благодарностью! Заранее спасибо, ребята.
ManyToManyField
— это просто синтаксический сахар для автоматического создания и запроса промежуточной таблицы. Если вы создаете таблицу явно, как вы сделали здесь, то вам не нужно это поле (хотя оно все равно может быть полезным). Однако с представленной вами схемой возникает ряд проблем. Ни один из них не имеет ничего общего с Django, это вопрос моделирования базы данных SQL. Я предлагаю задать более общий вопрос (как я могу смоделировать эти данные? вот что я пробовал...) и пометить его тегом дизайн базы данных или моделирование данных. - person Kevin Christopher Henry   schedule 03.05.2016