如何在Django中设置下拉菜单的默认值?
问题描述:
目前,我有以下两个下拉式菜单来显示年份和周,但我希望分别显示这些菜单中的当前年份和当前周。如何在Django中设置下拉菜单的默认值?
Django的形式
from django import forms
class DropDownMenuForm(forms.Form):
week = forms.ChoiceField(choices=[(x,x) for x in range (1,53)])
year = forms.ChoiceField(choices=[(x,x) for x in range (2016,2021)])
模板显示菜单
<form id="search_dates" method="POST" action="{{ action }}"> {% csrf_token %}
<div class="row">
<div style="display:inline-block">
<h6>Select year</h6>
<select name="select_year">
<option value={{form.year}}></option>
</select>
</div>
<div style="display:inline-block">
<h6>Select week</h6>
<select name="select_week">
<option value={{form.week}}></option>
</select>
</div>
<button type="submit">Search</button>
</div>
</form>
显示当前周和年
from datetime import date
date.today().isocalendar()[1]
date.today().year
如何连接将当前的周和年代码与模板一起显示,以便我可以在下拉菜单中看到当前选择的年份和周数?
答
您可以为表单字段设置initial值:
from datetime import date
from django import forms
class DropDownMenuForm(forms.Form):
week = forms.ChoiceField(choices=[(x,x) for x in range (1,53)], initial=date.today().isocalendar()[1])
year = forms.ChoiceField(choices=[(x,x) for x in range (2016,2021)], initial=date.today().year)
答
您可以使用initial =“”属性设置默认值。见下面的例子从Django文档
from django import forms
class CommentForm(forms.Form):
name = forms.CharField(initial='Your name')
url = forms.URLField(initial='http://')
comment = forms.CharField()
f = CommentForm(auto_id=False)
print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" required /></td></tr>
<tr><th>Url:</th><td><input type="url" name="url" value="http://" required /></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" required />
</td></tr>
工作就像一个魅力! –