为多个表单设置初始值

时间:2015-07-24 12:01:26

标签: django django-forms django-views

我看了一些例子,但没有一个对我有用。

我所拥有的是位置列表,用户可以选择将它们添加到组中。第一步是他给小组起一个名字。然后,他可以从数据库中已有的位置中进行选择,将它们添加到组名中。

简单来说,我想为每个位置循环3个表单元素,并为每个位置附加初始值,因此它可以存储在组中。

这就是我想看到的:

<form> 

<input type="text" label="group_name">

First Location
<input type="hidden" value="street_name">
<input type="hidden" value="location_name">
<input type="checkbutton"> 

Second location
<input type="hidden" value="street_name2">
<input type="hidden" value="location_name2">
<input type="checkbutton"> 


and so on

<input type="submit" value="Create this Group">

</form>

我试过这样的话:

Froms.py目前缺少True和False的检查输入。 FORMS.py:

class GroupAddForm(forms.ModelForm):
    groupname = forms.CharField(label='',widget=forms.HiddenInput(attrs={'rows': '4', 'class': 'form-control'}))
    page_name = forms.CharField(label='' ,widget=forms.HiddenInput(attrs={'rows': '4', 'class': 'form-control'}))
    page_street =  forms.CharField(label='' ,widget=forms.HiddenInput(attrs={'rows': '4', 'class': 'form-control'}))

    class Meta: 
        model = GroupManagement
        fields = ['groupname', 'page_name', 'page_street']

查看:

def page_groups(request):
email =request.user.email
locationdata = LocationData.objects.filter(email=email).values_list(
    'id',
    'name',
    'street',
    'postal_code',
    'tel',  
    'website',
    'description',
    'fb_page_id'
    )

form = []

for items in locationdata:

    name = items[1]
    form = GroupAddForm(request.POST or None, initial={"page_name": name})

print(form)

context = {
'locationdata': locationdata,
'form': form,
}

return render(request, 'page_groups.html', context)

模板中的OR:

 <form method="POST" action=""> {% csrf_token %}
                                    {% for items in locationdata %}
                                        {{items.1}}
                                        {{form.fields.page_name.value|default:items.1}}
                                        {{form}}
                                    {% endfor %}
                                    </form>

在视图内部,只有最后一个元素附加到表单。 模板内的初始值根本不起作用。

1 个答案:

答案 0 :(得分:1)

自己修正了。

for items in locationdata:

    name = items[1]
    form = GroupAddForm(request.POST or None, initial={"page_name": name})
    forms.append(form)


    <form method="POST" action=""> {% csrf_token %}
     {% for items in forms %}
       {{items}}

     {% endfor %}
     </form>