我的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
我无法弄清楚如何初始化空而不是“无”A。
我需要你的帮助,
谢谢你
答案 0 :(得分:2)
我认为您混淆了ManyToManyField
和ForeignKey
要初始化外键,您只需执行以下操作:
i = A().save()
i.b = objectb
i.save()
其中objectb
是类B
的实例
i.b.add(objectb)
抛出异常的原因是,
i.b
正在访问模型实例b
的属性i
,即None
,当ORM尝试在add
上调用b
时{1}},确实是None
。因此错误。
答案 1 :(得分:1)
试试这个:
a = A()
b = B()
b.save()
a.b = b
a.save()