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我已经编辑了代码。你认为有更好的解决办法吗?