Tôi đang gặp khó khăn khi truy cập dữ liệu được gửi qua bộ định dạng của tôi. Đây là mã của tôi:Django truy cập dữ liệu định dạng
mẫu:
<form action="" method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{ form.as_p }}
{% endfor %}
<input type="submit" value="Submit">
</form>
Xem:
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'))
Tôi đã thử nhiều cách để truy cập vào dữ liệu sang một bên từ những gì hiện đang viết bao gồm: f['attribute']
cd['attribute']
request.POST['attribute']
formset.cleaned_data['attribute']
Tôi nhận được các lỗi khác nhau, từ u"Key 'email' not found in Form"
đến list indices must be integers, not str
Tôi nên truy cập dữ liệu được gửi bởi một bộ định dạng như thế nào? Tài liệu của Django không đưa ra câu trả lời rõ ràng cho điều này và tìm kiếm xung quanh tôi tìm thấy nhiều cách khác nhau nhưng không có cách nào làm việc được. Cảm ơn bạn đã giúp đỡ.
Bạn không cần phải kiểm tra 'f.is_valid()'. Một bộ định dạng không hợp lệ trừ khi tất cả biểu mẫu của nó cũng hợp lệ. –
@PeterDeGlopper Bạn đang phải – karthikr
bất kỳ cách nào để kiểm tra điều này trước khi is_valid? – radtek