Как создавать отношения в моделях 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)
это гарантирует отсутствие сообщений, не связанных с пользователем