Ich habe Schwierigkeiten beim Zugriff auf die Daten über mein Formularsatz. Hier ist mein Code:Django Zugreifen auf Formularsatzdaten
Vorlage:
<form action="" method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{ form.as_p }}
{% endfor %}
<input type="submit" value="Submit">
</form>
Ausblick:
def addMembers(request, id, members):
if request.user.is_authenticated():
members = int(members)
MemberFormSet = formset_factory(MemberForm, extra = members)
if request.method == 'POST':
print 'post'
formset = MemberFormSet(request.POST)
if formset.is_valid():
cd = formset.cleaned_data
for f in formset:
first_name = cd.first_name
last_name = cd.last_name
email = cd.email
house = House.objects.get(id = id)
member = Member(first_name = first_name, last_name = last_name, email = email, house = house, created_on = timezone.now())
member.save()
return HttpResponseRedirect(reverse('houses:controlPanel'))
else:
formset = MemberFormSet()
return render_to_response('houses/add_members.html', {'formset' : formset}, context_instance = RequestContext(request))
return HttpResponseRedirect(reverse('allauth.account.views.login'))
ich verschiedene Möglichkeiten, die Daten zugreifen beiseite versucht haben, was zur Zeit einschließlich geschrieben: f['attribute']
cd['attribute']
request.POST['attribute']
formset.cleaned_data['attribute']
Ich bekomme Fehler im Bereich von u"Key 'email' not found in Form"
bis list indices must be integers, not str
Wie soll ich auf die Daten zugreifen, die von einem Formularsatz übergeben werden? Djangos Dokumentation gibt keine klare Antwort darauf und bei der Suche finde ich viele verschiedene Wege, aber keine, die bisher funktioniert haben. Danke für Ihre Hilfe.
Sie müssen 'f.is_valid()' nicht überprüfen. Ein Formset ist nicht gültig, es sei denn, alle seine Form sind ebenfalls gültig. –
@PeterDeGlopper Sie haben Recht – karthikr
eine Möglichkeit, dies vor is_valid zu überprüfen? – radtek