这似乎是一个简单的问题,但我觉得我错过了一些东西。
我有两个对象:A
和B
。 B有一个名为my_a
的ForeignKey,由于各种原因,我需要在A到B上有一个ForeignKey,即A.the_b_used
。在视图函数中,我想创建A(a = A()
)的实例和B(b = B()
)的实例,然后将它们链接在一起。但是我的对象(a& b)需要有id才能链接它们(对吧?),所以我认为你必须这样做:
a = A()
b = B()
a.save()
b.save()
a.the_b_used = b
b.my_a = a
a.save()
b.save()
看起来我必须做4 .save()
,即4次写数据库操作。有没有办法做到这一点,而无需做尽可能多的数据库操作?我可能会遗漏一些简单的东西。
答案 0 :(得分:1)
在大多数情况下,如果已经有一个从子对象返回到父对象的外键,则不需要从父对象到子对象的foriegn密钥。通过使子对象上的外键列唯一,从而只有一个子项可以链接到特定父对象来实现一对一的对应关系。
假设您使用'A'作为孩子,并将父键'B'设为外键列。由于从b
到a
的链接隐含了从a
返回b
的链接,因此您无需知道a
的ID b
完成。
a = A()
b = B()
b.save()
b
有'id',我们可以将其用于a
a.the_b_used = b
a.save()
这就是你应该需要的一切。