假设A并且B是 django 模型,其中A有一个外键字段B:
a = A()
b = B()
a.my_b = b
b.save()
a.save()
令人惊讶a的是保存null在外my_b键字段中。如果您a.my_b在保存之前或之后检查它确实引用了该b实例,但是似乎 django 在a.my_b = b分配时评估外键 id 本身,而不是在a.save(). 在复杂的系统和流程中,可能很难更改命令的顺序,因此b在分配之前简单地保存a可能是不切实际的......
在保存命令之间添加令人难以置信的语句a.my_b=a.my_b是可行的,但在我看来是一个可怕的解决方法。
有没有办法配置 django 在保存模型实例时重新评估外键?
是否有不同的方法可以解决这个问题?