Django-Zugriff auf Daten formset
Ich Schwierigkeiten beim Zugriff auf die übermittelten Daten durch meine Formularsatz. Hier ist mein code:
Vorlage:
<form action="" method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{ form.as_p }}
{% endfor %}
<input type="submit" value="Submit">
</form>
Anzeigen:
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 habe versucht, mehrere Möglichkeiten, den Zugriff auf die Daten abgesehen von dem, was derzeit geschrieben, darunter:
f['attribute']
cd['attribute']
request.POST['attribute']
formset.cleaned_data['attribute']
Bekomme ich Fehler reichen von u"Key 'email' not found in Form"
zu list indices must be integers, not str
Wie soll ich den Zugriff auf die Daten, die von formsets? Djangos Dokumentation nicht geben eine klare Antwort auf diese und Sucherei finde ich viele verschiedene Möglichkeiten, aber keine, die gearbeitet haben, noch. Vielen Dank für Ihre Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
cd ist ein Wörterbuch. Auch, möchten Sie vielleicht zu Holen, die Wörterbuch-Werte aus einzelnen Formen eher als das formset
f.is_valid()
. Ein formset ist nicht gültig, wenn alle Ihre form gültig sind.Ich denke, Sie sollten eine model_formsetfactory, oder noch besser, einen inlineformset_factory. Sie bevölkern Modelle von Formular-Daten, welche Sie bestimmt sind. Holen Sie sich die schmutzigen Modelle aus der Formularsatz mit commit=False, und fügen Sie in Ihrem Haus Beziehung. So etwas wie dieses:
Hinweis: Ihr get() wird auch eine Ausnahme, wenn das Haus-Objekt nicht existiert. Nur eine design-Betrachtung.