使用Form或ModelForm更新QuerySet

时间:2018-10-18 12:08:04

标签: django django-models django-forms django-queryset modelform

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

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

但是我跌倒了,因为它不是一种很干净的方法,有没有一种更有效的方法?

1 个答案:

答案 0 :(得分:1)

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

forms.py:

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

在views.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)