Двойной ключ-отношение между моделями Django - PullRequest
0 голосов
/ 06 апреля 2020

Я немного запутался здесь:

class MyBirthday(Model):
    date = models.DateTimeField()
    invitations_quantity = models.IntegerField()
    message = models.CharField(max_length=500)
    user = models.ForeignKey(User)
    location = models.OneToOneField(Location)

class Attendant(Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birthday_id = models.ForeignKey(MyBirthday)

Дело в том, использовать или нет атрибут пользователя в модели MyBirthday, я имею в виду, все ли в порядке, если я только что оставил атрибут Attendant ' Birthday_id 'ссылка это?

1 Ответ

1 голос
/ 06 апреля 2020

Я полагаю, что будет один день рождения для одного человека (MyBirthday.user), который будет иметь несколько посетителей. В вашем случае вы определили отдельную таблицу для посетителей.

Как насчет того, чтобы создать поле «многие ко многим» в MyBirthday, где вы можете разместить своих участников прямо под ним?

Например:

class MyBirthday(Model):
    date = models.DateTimeField()
    invitations_quantity = models.IntegerField()
    message = models.CharField(max_length=500)
    user = models.ForeignKey(User)
    location = models.OneToOneField(Location)
    attendees = models.ManyToManyField(User, blank=True)

Под капотом Django создаст отдельную таблицу, в которой будут храниться ваши посетители, и у вас будет более чистая модель.

См. Django документация, в которой приведены дополнительные примеры с использованием: https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/

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