我的项目中有多个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)
您有任何想法或更好/更安全的解决方案吗?
答案 0 :(得分:1)
临时对象似乎毫无意义。从表单的清理数据直接更新会更容易:
Product.objects.update(**self.cleaned_data)