【问题标题】:Django : One to many relationshipDjango:一对多关系
【发布时间】:2021-11-28 12:29:37
【问题描述】:

我有一个关于对象建模的问题。假设我们有一个一对多的关系,其中一个对象 A 实例可以有 0 到多个链接的对象 B,而对象 B 可以链接到一个且只有一个对象 A(注意这里的对象 B 不能在没有链接到对象 B 的情况下创建)。 到目前为止,我已经为对象 B 模型添加了一个外键,添加该对象时我应该选择一个 Object A ,到目前为止一切都很好。 我现在的问题是我是否还必须在数据库级别将对象 B 添加到对象 A 模型中?还是我应该通过创建嵌套 API 在 API 级别上做到这一点?所以获取对象 B 是这样的:

get : http://localhost/api/objectA/objectB

我希望我清楚地解释了我的问题,但总而言之,我不确定添加外键是否代表 a : 0.n---->1.1 就足够了。

我已经很久没有设计数据库了,我使用的是非常古老的方法吗?

谢谢

【问题讨论】:

    标签: django django-models django-rest-framework


    【解决方案1】:

    我现在的问题是我是否还必须在数据库级别将对象 B 添加到对象 A 模型?

    。如果你构造了一个像ForeignKey 这样的关系,你可以让Django 反向查询。因此,如果您有两个模型:

    class A(models.Model):
        pass
    
    class B(models.Model):
        a = models.ForeignKey(A, on_delete=models.CASCADE)

    然后你可以获取属于某个A对象somea的所有B对象:

    <em>somea</em><strong>.b_set.all()</strong>

    您可以通过设置related_name=… parameter [Django-doc] 反向重命名关系。因此,您可以将关系指定为:

    class A(models.Model):
        pass
    
    class B(models.Model):
        a = models.ForeignKey(
            A,
            related_name='bs',
            on_delete=models.CASCADE
        )

    然后查询:

    <em>somea</em><strong>.bs</strong>.all()

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 2018-08-28
      • 2013-04-06
      • 1970-01-01
      • 2011-06-22
      • 2017-07-16
      相关资源
      最近更新 更多