Django:一对多关系

Django : One to many relationship

我有一个关于对象建模的问题。假设我们有一个一对多的关系,其中一个对象 A 实例可以有 0 到多个链接的对象 B,而对象 B 可以链接到一个且只有一个对象 A(注意这里不能在不链接到对象 B 的情况下创建对象 B ). 到目前为止,我已经向对象 B 模型添加了一个外键,在添加该对象时我应该 select 一个对象 A ,到目前为止一切顺利。 我现在的问题是我是否还必须在数据库级别将对象 B 添加到对象 A 模型?或者我应该通过创建嵌套的 API 来在 API 级别上进行操作吗?这样获取对象 B 就是这样:

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

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

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

谢谢

My question now is do I have to also add the object B to object A model on database level?

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

class <strong>A</strong>(models.Model):
    pass

class B(models.Model):
    <strong>a</strong> = 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,
        <b>related_name='bs'</b>,
        on_delete=models.CASCADE
    )

然后查询:

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