首页 > 解决方案 > 使用 Form 或 ModelForm 更新 QuerySet

问题描述

我正在尝试使用 for 更新查询集的所有值,我发现了这种方法:

queryset = Query.objects.filter(version=XXX)
field1 = ModelForm.cleaned['field1']
...
fieldN = ModelForm.cleaned['fieldN']
queryset.update(['field1'=field1, ... , 'fieldN'=fieldN])

但我觉得这不是一种非常干净的方法,有没有更有效的方法?

标签: djangodjango-modelsdjango-formsdjango-querysetmodelform

解决方案


我终于用这种方法做到了:

在forms.py中:

 class UpdateAll(forms.Form):
    field_1 = forms.FloatField()
    field_2 = forms.FloatField()
    field_3 = forms.FloatField()

在 view.py 中:

 def update_all(request):
    queryset = Model.objects.filter(filter=filter)
    if request.method == 'POST':
         form = UpdateAll(request.POST)
         if form.is_valid():
             data = form.cleaned_data
             queryset.update(**data)

推荐阅读