我得到了一个模型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)
答案 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