在FormView django中保存m2m

时间:2015-04-20 02:50:55

标签: django django-forms django-views manytomanyfield

我正在尝试在FormView中保存m2m字段。

这是我的代码:

class ProductorPropietarioView(FormView):
    form_class = FormPropietario
    success_url = '/'
    template_name = 'productores/propietario.html'

    def form_valid(self,form):      
        form.save(commit=False)
        form.save()
        form.save_m2m()
        return super(ProductorPropietarioView,self).form_valid(form)

models.py

class Persona(models.Model):
    predio = models.ForeignKey(InfoPredioGeneral,related_name='predio+')
    rol = models.ManyToManyField(RolPersona)
    tipo_identificacion = models.ForeignKey(TipoIdentificacion,related_name='tipo identificacion+',blank=True,null=True)
    numero_identificacion = models.CharField(max_length=100,blank=True,null=True)

forms.py

class FormPropietario(ModelForm):
    class Meta():
        model = Persona
        fields = '__all__'

我无法让这个工作。我知道首先我必须设置False然后保存表单然后保存m2m。我已经尝试过只使用form.save()

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试更改FormView,如下所示:

    def form_valid(self,form):      
        f = form.save(commit=False)
        f.save()
        form.save_m2m()
        return super(ProductorPropietarioView,self).form_valid(form)