【发布时间】:2019-12-02 20:14:14
【问题描述】:
我正在尝试加载带有用户付款选项的表单,因此需要从用户个人资料中设置查询。
我已尝试在需要用户的情况下初始化表单(如下代码)。问题是如果我在初始化时制作 self.options 。我也尝试过创建choice_field
class ListPaymentOptionsForm(forms.Form):
choice_field = forms.ChoiceField(widget=forms.RadioSelect, choices=options)
def __init__(self, user, *args, **kwargs):
self.options = list(UserPaymentOption.objects
.values_list('last_four', 'last_four')
.filter(user=user, active=True))
super(ListPaymentOptionsForm, self).__init__(self, *args, **kwargs)
上面的代码给出了这个错误: 选择字段 = forms.ChoiceField(小部件=forms.RadioSelect,选择=选项) NameError: name 'options' 没有定义
然后我尝试像这样在视图上添加选项
form = ListPaymentOptionsForm(user=request.user)
form.fields['choice_field'].choices = list(UserPaymentOption.objects
.values_list('id', 'last_four')
.filter(user=request.user, active=True))
这会导致在发布时使用的表单出现错误,这似乎是因为它试图验证提供的值是一个选项,但在实际表单中该选项未设置。我认为这是问题的原因是这就是表单返回的内容
form=ListPaymentOptionsForm(request.POST)
print(form)
这将返回:选择字段:
对此的任何意见将不胜感激。谢谢。
【问题讨论】:
标签: django forms radio-button