我想根据我的客户模型构建表单。
在表单中,登录用户指定收款人,键入金额并选择他想要支付的帐户。
这是迄今为止的模型和形式:
class Payment(models.Model):
payee = models.ForeignKey(Customer)
amount = models.IntegerField()
accounts = models.ManyToManyField(BankAccount)
class PaymentForm(forms.ModelForm):
class Meta:
model = Customer
widgets = {
'accounts': forms.CheckboxSelectMultiple(),
}
此表单的问题在于,它为系统中存在的每个可能帐户生成一个复选框,无论用户是否实际使用该帐户。可能有几十种类型的帐户,而用户可能只有3或4个帐户。
我希望表单只为用户拥有的帐户提供复选框。
有没有办法做到这一点?
答案 0 :(得分:0)
您可以在表单__init__
或视图中覆盖它:
# whatever you use as user/customer, filter out accounts owned
accounts = BankAcount.objects.filter(user=request.user)
form = PaymentForm()
form.fields['accounts'].queryset = accounts