【问题标题】:How to create relationships in Django models如何在 Django 模型中创建关系
【发布时间】:2021-12-20 12:19:30
【问题描述】:

我不确定我应该如何正确地表达我的关系。假设我有 2 张桌子 UserPost。对于这个例子,我将混合和匹配这两个表之间的关系。

关系

  • 第一种情况

    一个用户有zero-to-many 的帖子,一个帖子属于one 用户。

    • 我查看了 Django 文档中的 Many-to-One 关系,并决定我可以通过执行以下操作来建模...
    class User(models.Model):
      pass
    
    class Post(models.Model):
      user = models.ForeignKey(User)
    
    • 我认为User 可以有很多帖子(零个或多个)。
    • Post 属于 one(并且仅属于 one)用户。
  • 第二个案例

    User 拥有 one-to-many 帖子,Post 属于 one 用户

    • 这与第一种情况几乎相同,但这里的区别在于User 具有one-to-many 帖子与zero-to-many。我不确定如何建模。我如何告诉我的模特User 至少拥有1 个或多个帖子但不为零

如果我需要进一步澄清,我可能会在这个问题中添加更多其他关系,但现在我真的很想知道这是如何工作的。我唯一能想到的就是有一个null=Trueblank=True,这样我就可以什么都没有zero-to-many,或者保留默认值,这样我就有one-to-many

【问题讨论】:

    标签: django model psql


    【解决方案1】:

    我觉得下面这个方法很流行一个

    class User(models.Model):
      pass
    
    class Post(models.Model):
      user = models.ForeignKey(User, on_delete=models.CASCADE)
    

    这将保证没有任何与用户相关的帖子

    【讨论】:

    • 那么这是否意味着添加 on_delete=models.SET_NULL, null=True, blank=True 将允许 0 到多个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2021-11-14
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多