我的 models.py 看起来像这样:
class B(models.Model):
...
class C(models.Model):
...
class D(models.Model):
...
class A(models.Model):
b = models.ForeignKey(B, blank=True, null=True)
c = models.ForeignKey(C, blank=True,null=True)
d = models.ForeignKey(D, blank=True,null=True)
在views.py中,我必须初始化一个空的A,然后再填充它。我可以使用
i = A().save()
但是当我尝试类似的事情时:
i.b.add(objectb)
发生此异常:
'NoneType' object has no attribute 'b'
我尝试取消 null=True :
class A(models.Model):
b = models.ForeignKey(B, blank=True)
c = models.ForeignKey(C, blank=True)
d = models.ForeignKey(D, blank=True)
但是随后发生了另一个异常:
A.b_id may not be NULL
我不知道如何初始化一个空的但不是“None”的A。
我需要你的帮助,
谢谢你
最佳答案
我认为你很困惑ManyToManyField
和 ForeignKey
要初始化外键,您只需执行以下操作:
i = A().save()
i.b = objectb
i.save()
其中objectb
是类B
的实例
i.b.add(objectb)
抛出异常的原因是,
i.b
正在访问模型实例 i
的属性 b
,该属性为 None
,并且当ORM 尝试调用 b
上的 add
,它确实是 None
。因此出现了错误。
关于django - 如何在Django中使用ForeignKey初始化一个空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569910/