1

如何说服基于 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."

即使中间模型中的所有字段都有默认值,我也无法保存基于类的通用视图。基于功能的版本看起来也很混乱。姜戈 1.3。

4

2 回答 2

2

正如贝里斯拉夫·洛帕克所说:

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)

我在这里回答一些类似的问题。

于 2013-04-01T15:11:49.633 回答
0

您应该扩展UpdateView并覆盖该form_valid()方法以手动保存中间模型。

就个人而言,我从不直接从 URL 模式中使用通用视图,我总是在views.py.

于 2012-07-13T15:34:42.950 回答