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

Django 如何使用ModelForm更新同一模型的多个对象?,django,django-models,django-forms,django-1.10,Django,Django Models,Django Forms,Django 1.10,我的项目中有多个产品对象。我想创建一个表单,一次更新所有Product对象。由于Product有许多属性,我想抽出一些时间,使用ModelForm来实现它,但我不知道如何做到这一点 因此,我不想更新任何特定的对象,而是有许多这样的对象,但我想为所有对象设置相同的属性,但不更改id(以及另一个字段-OneToOne) 我认为这可能是一个解决方案,但无法完成save方法 class UpdateMultipleProductObjects(forms.ModelForm): class M

我的项目中有多个
产品
对象。我想创建一个表单,一次更新所有
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)

您有什么想法或更好/更安全的解决方案吗?

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

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

这个问题不清楚。是要为每个产品设置一个表单,还是要将所有产品设置为相同的值?您的
临时对象的意义是什么?@DanielRoseman我想将所有产品设置为相同的值(但它们以前可能不同)。临时对象类似于产品更新的模板。它包含所有必要的信息,因此我不必显式地编写所有属性。@DanielRoseman我已经编辑了代码。你认为有更好的解决办法吗?