Django的。如何连接下拉列表(来自html)和表单?

时间:2014-05-17 13:36:00

标签: python django django-forms django-templates django-widget

A在模型中有一个字段(名称模型是Users_data):

bir_date = models.DateField(verbose_name="")

表示模型的形式:

class Form_registration (ModelForm):
class Meta:
    model = Users_data

in html:

<form name="registration" method="post" action="save_data_user/">
{% csrf_token %}
{{ form_registration.as_p }}
<input type="submit" value="SignUp">
</form>

查看保存表单:

def saves_data_user_on_registration (request):
if request.method == 'POST':
    c = {}
    c.update(csrf(request))
    form_user_data = Form_registration(request.POST, request.FILES)
    if form_user_data.is_valid():
        print form_user_data.errors
        form_user_data.save()
        return render_to_response('see_you_later.html', c,           context_instance=RequestContext(request))
    else:
        print form_user_data.errors
        return render_to_response('error.html', c, context_instance=RequestContext(request))

我可以保存表单中的简单数据。

但我需要从我的模型Users_data中的html字段中的下拉列表中保存数据。

<select name="DateOfBirth_Month">
<option>Month</option>
<option value="1">January</option>
<option value="2">February</option>
...



 <select id="cd-dropdown" class="cd-select">
 <option value="-1" selected>Day</option>
 <option value="1">01</option>
 <option value="2">02</option>
 ...

<select name="DateOfBirth_Year">
<option>Year</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
...

我不明白如何将下拉列表与我的表单或模型联系起来。

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

您需要定义widget并使用widgets on the Meta classDateField设置它。

可以在Django documentation中找到将年,月和日分成单独下拉菜单的特定小部件的一个很好的示例,请参阅DateSelectorWidget

class Form_registration (ModelForm):
    class Meta:
        model = Users_data
        widgets = {'bir_date': widgets.DateSelectorWidget()}

此代码假设您已在widgets.py类中创建了DateSelectorWidget模块。

该任务的另一个好小部件是django.forms.extras.widgets.SelectDateWidget

  

三个选择小部件的包装:每个小时,每天和每个小部件   年。

另见:

希望有所帮助。

答案 1 :(得分:0)

答案是在模型中使用DateField的选择属性。

以下是如何操作:https://docs.djangoproject.com/en/dev/ref/models/fields/