为什么我不能在Django中使用两次通用关系保存我的模型?

时间:2010-04-29 09:13:46

标签: django save generic-relations

我得到了一个模型TrackedItem,其通用关系链接到它应该跟踪的任何模型。

如果我这样做:

t = TrackedItem(content_object=MyModel)
t.save()
t.save()

我明白了:

IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'")

实际上,第一次保存创建了一个以“1”作为PK的条目。但是第二次保存不应该插入,它应该更新。

我想如何更新模型我无法保存两次?

使用普通型号,我可以尽可能多地保存。

编辑:它可能与通用关系完全无关。

我有一个压倒性的保存,我用这种方式称之为超级:

super(TrackedItem, self).save(self, *args, **kwargs)

如果我这样做,它可以工作:

model.Model.save(self, *args, **kwargs)

2 个答案:

答案 0 :(得分:5)

您的问题很可能是因为错误使用'超级'。它应该是这样的:

super(TrackedItem, self).save(*args, **kwargs)

答案 1 :(得分:0)

我认为这是一个数据库事务问题。这两个保存电话有DB-Commit吗?也许你的View在transaction.commit_on_sucess controll下。

2可能性:

  transaction.commit() # within transaction.commit_manually

  t.save(force_update=True) # 2nd save call