2011-05-26 15 views
5

這是形式:你如何改變Django的SelectDateWidget到日,月,年的順序?

from django.forms.extras.widgets import SelectDateWidget 


class EntryForm(forms.ModelForm): 

    class Meta(): 
     model = Entry 

    def __init__(self, *args, **kwargs): 
     super(EntryForm, self).__init__(*args, **kwargs) 
     this_year = datetime.date.today().year 
     years = range(this_year-100, this_year+1) 
     years.reverse() 
     self.fields["date_of_birth"].widget = SelectDateWidget(years=years) 

場出生的日期是呈現像這樣

enter image description here

我如何改變它,這樣它會呈現爲一天,一個月,一年?

回答

5

從這個插件我看到的下拉菜單的順序由DATE_FORMAT設置定義的源代碼:

format = get_format('DATE_FORMAT') 
    escaped = False 
    output = [] 
    for char in format: 
     if escaped: 
      escaped = False 
     elif char == '\\': 
      escaped = True 
     elif char in 'Yy': 
      output.append(year_html) 
     elif char in 'bFMmNn': 
      output.append(month_html) 
     elif char in 'dj': 
      output.append(day_html)  

嘗試在settings.py改變DATE_FORMATj N, Y例如。

+0

打我給它進行設置。 :) – 2011-05-26 10:29:29

+1

我快40秒!好極了! :-) – 2011-05-26 10:31:44

+4

謝謝。我還需要將USE_L10N設置爲False才能使其工作。 – Neil 2011-05-26 10:43:10

1

如果你看看django/forms/extras/widgets.py,其中定義了SelectDateWidget,那麼render函數包含這段代碼。

90   output = [] 
91   for field in _parse_date_fmt(): 
92    if field == 'year': 
93     output.append(year_html) 
94    elif field == 'month': 
95     output.append(month_html) 
96    elif field == 'day': 
97     output.append(day_html) 
98   return mark_safe(u'\n'.join(output)) 

_parse_date_fmt使用get_format('DATE_FORMAT')

它看起來像DATE_FORMAT可以在settings.py

https://docs.djangoproject.com/en/dev/ref/settings/#date-format

相關問題