我正在尝试更改为 Django 中的给定用户保存的组列表。为此,我重写了 UserAdmin 类,并且我的 save_form() 方法被正确触发。从那里我试图覆盖 form.cleaned_data['groups'] 或使用 form.data.setlist('groups', ...) 中的值。但是,我所做的任何修改都没有保存到数据库中。相反,请求用户设置的项目被保存,我的代码没有影响(尽管它正在运行。)
我的问题是:我是否修改了表单中的正确值?为什么这些字典对保存到数据库的结果没有影响?有一个 form.instance 变量保存正在修改的用户。我想知道是否可以在运行 form.save(commit=False) 后使用它来重置组,但我想看看是否有一种干净的方法可以从 save_form 覆盖 M2M 字段。
这是我刚刚进行的另一次尝试,因为我注意到 form_save() 的返回是正在修改的 User 实例:
def save_form(self, request, form, change):
f_save = form.save(commit=False)
f_save.groups = new_queryset # here i'm just overriding the queryset for the groups.
f_save.save()
return f_save
就像其他对 form.cleaned_data 和 form.data 的尝试一样。这对保存到数据库中的最终组没有影响。
谢谢,