我有一个模型,当它保存时,如果它的一个外键不存在,它应该创建并保存它:
class MyModel(m.Model):
fk = m.ForeignKey(AnotherModel)
def save(self):
if not self.fk_id:
self.fk = AnotherModel()
self.fk.save()
return super(MyModel, self).save()
但是调用会super(MyModel, self).save()
引发错误,因为self.fk_id
仍然为空:
回溯(最近一次通话最后): ... 文件“.../models.py”,第 10 行,保存 return super(MyModel, self).save() ... 执行中的文件“.../django/db/backends/postgresql_psycopg2/base.py”,第 44 行 返回 self.cursor.execute(查询,参数) IntegrityError:“fk_id”列中的空值违反非空约束
注意:调试器显示self.fk.id
已正确设置,self.fk_id = self.fk.id
添加后似乎一切正常。
所以,我的问题:为什么是self.fk_id = self.fk.id
必要的?是否有可能避免明确地这样做?