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()
我有一个关于对象建模的问题。假设我们有一个一对多的关系,其中一个对象 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()