访问保存在ModelForm中的视图form_valid函数中的数据

时间:2018-08-15 06:29:33

标签: python django many-to-many

假设我有两个模型:付款和用户

models.py

class Payment(models.Model):
    user = models.ManyToManyField(A, blank=True)

class User(models.Model):
    name = models.CharField(...)
    has_paid = models.BooleanField(...)

forms.py

CreatePayment(forms.ModelForm):
class Meta:
    fields = '__all__'

现在,当我提交CreatePayment表单时,我可以为每个付款选择多个用户(反之亦然,因为可以通过一次付款为多个用户付款,并且每个用户可以进行多次付款)。有没有一种方法可以编辑views.py中的form_valid方法,以便仅对在has_paid表单中选择的用户设置CreatePayment字段为True?

谢谢。

1 个答案:

答案 0 :(得分:1)

当然。您实际上需要模型表格吗?查看Django的基于类的视图,该视图具有一些内置功能来自动生成模型表单。

from django.views.generic import CreateView

class PaymentCreateView(CreateView):
    model = Payment
    fields = '___all___'

    def form_valid(self, form, **kwargs):
        form.cleaned_data['users'].update(has_paid=True)
        return super().form_valid(form, **kwargs)

当然,您可能需要对该代码段进行一些调整。