2016-02-19 4 views
0

У меня есть немного проблем с django-from. Я хотел бы получить поле Integer с 1960 года по текущий год.Как установить текущий год в Django Forms?

В forms.py у меня есть:

year = forms.IntegerField(label='year', min_value=1960, max_value=datetime.now().year) 

И это работает!

<input id="id_year" max="2016" min="1960" name="year" type="number"> 

Но, если я заменю DateTime.Now(). годdatetime.now(). второй, проблема становится очевидной

Значение поля, заполненного при запуске сервера (теперь я использую сервер разработки Django)

February 19, 2016 - 18:54:05 
Djangoversion 1.9.1, using settings Test.settings 
Starting development server at http://localhost:8000/ 
Quit the server with CONTROL-C. 

И теперь в шаблоне HTML я получаю

<input id="id_year" max="5" min="1960" name="year" type="number"> 

BUT Текущее время 18:54:18.

Вопрос: что мне делать, чтобы автоматически меняться год?

+1

Я действительно дон «Получи, что ты пытаешься сделать. Какова ваша цель? Чтобы показать текущий год, не так ли? Почему вы меняете его на 'datetime.now(). Second' then? –

+0

Что вы ожидаете, когда используется 'datetime.now(). Second'? Он показывает 'max = 5', что, вероятно, является 5-й секундой. – karthikr

+0

Я хочу автоматически изменить год. Пример с секундами показывает, что год (также как секунды) не изменится с временем сервера. –

ответ

2

По звукам этого, вы обеспокоены тем, что значение только изменяется при запуске сервера, вы можете исправить это путем установки значения в методе инициализации формы

class MyForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 
     self.fields['year'].max_value = datetime.now().year 
Смежные вопросы