J'essaie d'afficher un formset pour un utilisateur particulier.L'objet 'User' n'a pas d'attribut 'get' avec formset (passant l'utilisateur pour obtenir un ensemble de requêtes)
Si l'utilisateur est sur l'onglet médical, il doit alors afficher un minuscule formulaire (une case à cocher et une zone de texte) pour chaque personne à charge de l'utilisateur.
Dans mon views.py
j'ai ceci:
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
Dans mon forms.py
j'ai ceci:
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
Dans mon views.py
je reçois la forme comme ceci:
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,
})
Je cours dans l'erreur: 'User' object has no attribute 'get'
Si je ne passe pas un utilisateur, et commentez la fonction init , alors il affiche une case à cocher et une zone de texte comme prévu - mais je n'arrive pas à comprendre pourquoi passer l'utilisateur de cette façon ne fonctionne pas. Points bonus: si vous savez comment préremplir le formset avec les données correspondantes, c'est-à-dire une fois que j'ai dépassé l'erreur 'User'.
Avez-vous copié incorrectement l'index? Il n'y a pas d'indentation sur la ligne de retour. Aussi, qu'avez-vous fait pour affiner la ligne qui provoque l'erreur? – Acccumulation