如何使用 ModelForm 更新同一模型的多个对象?

How to update multiple objects of the same model using ModelForm?

我的项目中有多个 Product 对象。我想创建一个一次性更新所有 Product 对象的表单。由于 Product 有很多属性,我想抽出一些时间用 ModelForm 来做,但我不知道该怎么做。

所以我没有要更新的特定对象,而是有很多这样的对象,但我想为所有对象设置相同的属性但不更改 id(和另一个字段 - OneToOne).

我认为这可能是一个解决方案,但无法完成 save 方法。

class UpdateMultipleProductObjects(forms.ModelForm):

    class Meta:
        model = Product
        fields = '__all__'
        exclude = ['id',...]

    def save(self, *args, **kwargs):
        temporary_object = super(UpdateMultipleProductObjects,self).save(commit=False,*args,*kwargs)
        update_dict = {x.name : getattr(temporary_object,x.name) for x in temporary_object ._meta.fields if x.name not in ['id',...]}
        Product.objects.all().update(**update_dict)

您有什么想法或better/safer解决方案吗?

临时对象似乎毫无意义。直接从表单的清理数据更新会更容易:

Product.objects.update(**self.cleaned_data)