如何说服基于Django 1.3类的通用视图:
UpdateView.as_view(model=Category,
template_name='generic_form.html',
success_url='/category/')
不要轻易放弃错误:
"Cannot set values on a ManyToManyField which specifies an intermediary model."
即使中间模型中的所有字段都有默认值,我也无法获得基于类的通用视图来保存。基于功能的版本看起来也很混乱。 Django 1.3。
答案 0 :(得分:1)
您应该扩展UpdateView
并覆盖form_valid()
方法以手动保存中间模型。
就个人而言,我从不直接从URL模式使用通用视图,我总是在views.py
中逐字扩展。
答案 1 :(得分:1)
正如Berislav Lopac所说:
class CategoryView(UpdateView):
model=Category
def form_valid(self, form):
self.object = form.save(commit=False)
IntermediateModel.objects.filter(category = self.object).delete()
for other_side_model_object in form.cleaned_data['other_side_model_field']:
intermediate_model = IntermediateModel()
intermediate_model.category = self.object
intermediate_model.other_side_model_related_field= other_side_model_object
intermediate_model.save()
return super(ModelFormMixin, self).form_valid(form)
我回答了一些类似的here。