假设我有两个模型:付款和用户
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?
谢谢。
答案 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)
当然,您可能需要对该代码段进行一些调整。