我有一个显示外键字段下拉列表的表单。表单保存用户选择,但是我希望视图更新数据库条目而不是插入新条目。什么是最好的解决方法?
当前功能:
def formset_valid(self, formset):
self.object = formset.save()
self.object.save()
return HttpResponseRedirect(self.get_success_url())
我尝试过这样的事情:
d = RevisionDefaultType.objects.get(id=1)
n = RevisionSettings.objects.get(self.object)
d.defaultrevisiontype = n
d.save()
但它会抛出一个错误,即更新的数据不是实例。
答案 0 :(得分:3)
您必须将force_update=True
添加到save()
功能。
有关 Django如何知道更新与插入的详细信息,请参阅django&s>文档中的this链接。
答案 1 :(得分:1)
我设法从https://docs.djangoproject.com/en/dev/topics/db/queries/#saving-foreignkey-and-manytomanyfield-fields调整了更新示例。这似乎正在按预期工作。
def formset_valid(self, formset):
self.object = formset.save(commit=False)
revdefault = RevisionDefaultType.objects.get(pk=1)
revget = RevisionSettings.objects.get(global_revision_type=self.object)
revdefault.defaultrevisiontype = revget
revdefault.save()
return HttpResponseRedirect(self.get_success_url())
再次感谢您的帮助。