【发布时间】:2017-09-18 15:36:33
【问题描述】:
我正在尝试为特定用户显示表单集。
如果用户在“医疗选项卡”上,那么它应该为用户的每个家属显示一个小表单(一个复选框和一个文本框)。
在我的views.py 我有这个:
def get_dep_form(benefit_tab, user):
if benefit_tab == 'medical':
DepMedFormSet = formset_factory(DependentMedicalBenefitForm)
link_formset = DepMedFormSet(user)
else:
return None
return link_formset
在我的forms.py 我有这个:
class DependentMedicalBenefitForm(forms.ModelForm):
has_medical = forms.BooleanField()
med_group_id = forms.CharField(max_length=10)
class Meta:
model = Dependent
fields = [
'has_medical', 'med_group_id'
]
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
queryset = Dependent.objects.filter(employee=self.user)
super(DependentMedicalBenefitForm, self).__init__(*args, **kwargs)
self.fields['has_medical'].queryset = queryset
self.fields['med_group_id'].queryset = queryset
在我的views.py 中,我得到这样的表格:
def index(request, benefit_tab=None):
#stuff
if benefit_tab:
link_formset = get_dep_form(benefit_tab, request.user)
return render(request, 'benefits/index.html', {
#stuff
'link_formset': link_formset,
})
我遇到了错误:'User' object has no attribute 'get'
如果我不传递用户,并注释掉 init 函数,那么它会按预期显示一个复选框和文本框 - 但我不知道为什么以这种方式传递用户不工作。
奖励积分:如果您知道如何使用相应的数据预填充表单集 - 一旦我克服了“用户”错误,接下来就是。
【问题讨论】:
-
您是否错误地复制了索引?返回线上没有压痕。另外,您采取了哪些措施来缩小引发错误的行?
标签: python django django-forms formset