姜戈。如何连接下拉列表(来自html)和表单?
Posted
技术标签:
【中文标题】姜戈。如何连接下拉列表(来自html)和表单?【英文标题】:Django. How to connect drop-down list (from html) and forms? 【发布时间】:2014-07-05 21:24:10 【问题描述】:模型中有一个字段(模型名称为 Users_data):
bir_date = models.DateField(verbose_name="")
以及代表模型的表格:
class Form_registration (ModelForm):
class Meta:
model = Users_data
在 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>
...
而且我不明白如何将下拉列表与我的表单或模型联系起来。
感谢您的回答。
【问题讨论】:
【参考方案1】:您需要定义一个widget 并使用widgets
on the Meta
class 为DateField
设置它。
可以在 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
:
围绕三个 Select 小部件进行包装:月、日和日各一个 年。
另见:
Django SelectDateWidget to show month and year only django-datetime-widget希望对您有所帮助。
【讨论】:
感谢您的回答,但我有一个错误:在 widgets.py 中找不到参考“DateSelectorWidget” 虽然我正在导入小部件 - 从 django.forms 导入小部件 @user3636189 如果你想使用第一个选项,拥有DateSelectorWidget
自定义小部件,你应该在widgets.py
文件中创建它然后导入它。但是,我会先尝试django.forms.extras.widgets.SelectDateWidget
。【参考方案2】:
答案是在模型中为您的DateField
使用选择属性。
操作方法如下:https://docs.djangoproject.com/en/dev/ref/models/fields/
【讨论】:
以上是关于姜戈。如何连接下拉列表(来自html)和表单?的主要内容,如果未能解决你的问题,请参考以下文章
来自 web api 的 asp.net web 表单下拉列表