繁体   English   中英

在Django中更新外键字段

[英]Updating foreign key field in Django

我有一个表单显示外键字段的下拉列表。 表单保存用户选择,但是我希望视图更新数据库条目而不是插入新条目。 什么是最好的方式来解决这个问题?

当前功能:

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()

但它会抛出一个错误,即更新的数据不是实例。

您必须将force_update=True添加到save()函数中。

有关Django如何知道UPDATE与INSERT的更多信息,请参阅django文档中的链接。

我设法从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())

再次感谢您的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM