如何在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) 
+0

工作就像一个魅力! –

您可以使用initial =“”属性设置默认值。见下面的例子从Django文档

Django Docs

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>