3

我有一个模型,当它保存时,如果它的一个外键不存在,它应该创建并保存它:

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必要的?是否有可能避免明确地这样做?

4

1 回答 1

1

我认为这个错误报告是你的答案。目前,您只需要在相关对象本身具有主键后对其进行设置。他们仍在讨论补丁。

于 2012-07-18T21:51:17.617 回答