代码之家  ›  专栏  ›  技术社区  ›  Hanny

“User”对象没有formset的属性“get”(传递用户以获取queryset)

  •  0
  • Hanny  · 技术社区  · 7 年前

    我试图为特定用户显示一个表单集。

    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
    

    在我的 意见。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'

    如果我没有传递给用户,并注释掉 初始化

    1 回复  |  直到 7 年前
        1
  •  0
  •   Daniel Roseman    7 年前

    ,作为关键字arg。

    幸运的是,Django 1.9表单集通过 form_kwargs argument . 所以你应该:

    link_formset =  DepMedFormSet(form_kwargs={'user': user})