今天早上我碰到了一个奇怪的虫子,如果有人能向我解释为什么失败了,那就太好了。在
假设我有两个非常简单的模型:
class MoMo(models.Model):
pass
class Objo(models.Model):
hef_k = models.ForeignKey(MoMo, null=True, blank=True)
当我尝试创建其中一个时,然后按如下方式添加一个foreignkey:
^{pr2}$在目标存在的接缝:
obj.hef_k
Out[9]: <MoMo: MoMo object>
但当我从数据库刷新或只是再次获得它时,它就消失了:
obj.refresh_from_db()
In [12]: obj.hef_k
In [13]:
obj = Objo.objects.get(pk=obj.pk)
obj.hef_k
in [14]:
我错过什么了吗?这对我来说很奇怪,如果有任何帮助,我将不胜感激
您没有保存
obj
添加相关对象后,只保存了obj.hef_k
。在由于外键是
obj
上的一个实际字段,因此需要保存该对象以记录您已将其与Momo对象关联的事实。在必须先保存第二个对象,然后才能引用它。只要不保存它就没有主键。一般来说,使用
<Model>.objects.create()
生成新对象是一个好主意。它将自动保存对象您需要创建第二个对象,因为它不存在于数据库中(没有创建关系所需的PK)。您只需创建
obj2
,然后将它们分配给obj.href_k
:相关问题 更多 >
编程相关推荐