Django访问表单数据 [英] Django accessing formset data

查看:162
本文介绍了Django访问表单数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法访问通过我的表单提交的数据。这是我的代码:

I'm having difficulty accessing the data submitted through my formset. Here is my code:

模板:

<form action="" method="post">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for form in formset %}

    {{ form.as_p }}

    {% endfor %}

    <input type="submit" value="Submit">

</form>

查看:

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'))

我尝试了几种访问方式数据除了当前写的包括:
f ['attribute']
cd ['attribute']
request.POST ['attribute']
formset.cleaned_data ['attribute']

I've tried several ways of accessing the data aside from what is currently written including: f['attribute'] cd['attribute'] request.POST['attribute'] formset.cleaned_data['attribute']

我收到的错误范围从 uKey电子邮件Form中找不到 列表索引必须是整数,而不是str

I get errors ranging from u"Key 'email' not found in Form" to list indices must be integers, not str

如何访问表单提交的数据? Django的文档没有给出一个明确的答案和搜索周围,我发现许多不同的方式,但没有一个工作。感谢您的帮助。

How should I be accessing the data submitted by a formset? Django's documentation fails to give a clear answer to this and searching around I find many different ways but none that have worked yet. Thanks for your help.

推荐答案

cd是一个字典。另外,您可能想要从单个表单中获取字典值,而不是从formset获取

cd is a dictionary. Also, you might want to fetch the dictionary values from individual forms rather than the formset

if request.method == 'POST':
    formset = MemberFormSet(request.POST)
    if formset.is_valid():
        for f in formset: 
            cd = f.cleaned_data
            first_name = cd.get('first_name')
            last_name = cd.get('last_name')
            email = cd.get('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'))

这篇关于Django访问表单数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆