Как создавать отношения в моделях 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)

это гарантирует отсутствие сообщений, не связанных с пользователем

Вернуться на верх