2

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

如果我这样做:

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

我得到:

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

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

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

使用普通型号,我可以节省尽可能多的钱。

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

我有一个覆盖的保存,我在其中调用 super ,这样:

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

如果我这样做,它会起作用:

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

2 回答 2

5

您的问题很可能是因为错误使用了“super”。它应该是这样的:

super(TrackedItem, self).save(*args, **kwargs)
于 2010-04-29T10:19:04.333 回答
0

我认为这是一个数据库事务问题。两个保存调用之间是否有DB-Commit ?也许您的视图在 transaction.commit_on_sucess 控制之下。

2 可能性:

  transaction.commit() # within transaction.commit_manually

或者

  t.save(force_update=True) # 2nd save call
于 2010-04-29T09:31:31.587 回答