Как создавать отношения в моделях Django
Я не уверен, как я должен правильно представлять свои отношения. Допустим, у меня есть 2 таблицы User и Post. Для этого примера я буду смешивать и сопоставлять отношения между этими двумя таблицами.
отношения
- 1-й случай
Пользователь имеет
zero-to-manyпостов и пост принадлежитoneпользователю.- Я посмотрел на
Many-to-Oneотношения вDjangoдокументации и решил, что могу смоделировать это, сделав следующее...
class User(models.Model): pass class Post(models.Model): user = models.ForeignKey(User)- Я прочитал это как
Userможет иметь много постов (ноль или больше). - А
Postпринадлежитone(и толькоone) пользователю.
- Я посмотрел на
- 2-й случай
А
.Userимеетone-to-manyпостов иPostпринадлежитoneпользователю- Это почти идентично первому случаю, но разница в том, что
Userимеетone-to-manyпостов противzero-to-many. Я не уверен, как это смоделировать. Как мне сказать моей моделиUser, чтобы она имела по крайней мере 1 или более постов, но не ноль.
- Это почти идентично первому случаю, но разница в том, что
Я могу добавить другие отношения к этому вопросу, если мне понадобятся дальнейшие разъяснения, но сейчас я хотел бы знать, как это должно работать. Единственное, о чем я могу думать, это иметь null=True, blank=True, чтобы я мог не иметь ничего zero-to-many или оставить значение по умолчанию, чтобы я имел one-to-many
Я думаю, что следующий подход является таким популярным
class User(models.Model):
pass
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
это гарантирует отсутствие сообщений, не связанных с пользователем