django:在保存目标模型之前分配外键

时间:2012-11-06 10:24:47

标签: django foreign-keys

假设AB是django模型,其中A的外键字段为B

a = A()
b = B()
a.my_b = b
b.save()
a.save()

令人惊讶的是anull外键字段中的my_b一起保存。如果您在保存之前或之后检查a.my_b 会引用b实例,但似乎django在a.my_b = b分配时评估外键ID而不是a.save()。在复杂的系统和流程中,可能很难更改命令的顺序,因此在将b分配给a之前简单地保存a.my_b=a.my_b可能是不切实际的......

在保存命令之间添加令人难以置信的语句{{1}}有效,但在我看来这是一个可怕的解决方法。

有没有办法在保存模型实例时配置django重新评估外键?

是否有可能解决此问题的不同方法?

1 个答案:

答案 0 :(得分:7)

有一个描述此问题的Django票证,#8892

与此同时,没有配置设置可以改变行为。您必须更改保存和分配操作的顺序,或执行额外的分配。