Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 27, 2010 01:51:46

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

Здравствуйте,
Есть в джанго форма, там есть поле даты, которая заполняется в некоторых представлениях через datetime.date.today() на сегодняшнюю дату. Но при смене системной даты (банально новый день) дата остается такой каким был “сегодня” на момент запуска сервера (что для тестового сервиса, что для апачи). Подскажите как заставлять сменить дату без перезапуска сервиса.
Заранее благодарен.



Отредактировано (Авг. 27, 2010 02:04:20)

Офлайн

#2 Авг. 27, 2010 15:01:35

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Смена даты

Покажите код.



Офлайн

#3 Авг. 28, 2010 01:47:18

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

forms.py

...
class AddObj(forms.Form):
date_begin = forms.DateField(input_formats=('%d-%m-%Y'))
...
views.py
...
def add_obj(request):
form = AddObj(initial={'date_begin':datetime.date.today().strftime('%d-%m-%Y')})
...



Офлайн

#4 Авг. 28, 2010 16:12:02

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

Попробуй так дату устанавливать:

import datetime 
class DateTest(forms.Form):
in_date=forms.DateTimeField(initial=datetime.datetime.now() )

Отредактировано (Авг. 28, 2010 16:13:53)

Офлайн

#5 Авг. 29, 2010 00:00:39

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

romankrv
Попробуй так дату устанавливать:
import datetime 
class DateTest(forms.Form):
in_date=forms.DateTimeField(initial=datetime.datetime.now() )
Ну во первых, мне надо добавлять не в initial, а в views, так как эта же форма используется не только в этом представлении, и даты могут ставится разные.
Во вторых пробывал туда добавлять.
Единственное попробую сменить today на now - может в этом дело.



Офлайн

#6 Авг. 29, 2010 01:32:14

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

Ну, просто надо в initial указывать вызываемый объект. Тоесть не datetime.datetime.now(), а datetime.datetime.now.
Надеюсь поможет.



Офлайн

#7 Авг. 29, 2010 03:10:29

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

vaxXxa
Ну, просто надо в initial указывать вызываемый объект. То есть не datetime.datetime.now(), а datetime.datetime.now.
Надеюсь поможет.
Немного не понял вас, можно поподробнее? datetime.datetime.now - это метод, а мне надо значение получить.
И мне надо указывать дату в views, а не initial, так как эта форма может использовать разные даты.



Отредактировано (Авг. 29, 2010 03:13:20)

Офлайн

#8 Авг. 29, 2010 03:22:15

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

я имею ввиду, что если вы используете datetime.datetime.now() в моделях или формах, скажем, то соответственно метод вызывается один раз - при запуске скрипта.. надо перезагружать сервер, чтобы опять запустился скрипт. На примере модели:

class MyModel(models.Model):
timestamp1 = models.DateTimeField(_('Дата'), default=datetime.datetime.now())
timestamp2 = models.DateTimeField(_('Дата'), default=datetime.datetime.now)
В первом случае дата обновится только при запуске скрипта, во втором случае всегда при обращении к методу.

Знаю, что немножко отошел от темы, но думаю Вам поможет хоть как-то.



Офлайн

#9 Авг. 29, 2010 03:29:04

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

vaxXxa
я имею ввиду, что если вы используете datetime.datetime.now() в моделях или формах, скажем, то соответственно метод вызывается один раз - при запуске скрипта.. надо перезагружать сервер, чтобы опять запустился скрипт. На примере модели:
class MyModel(models.Model):
timestamp1 = models.DateTimeField(_('Дата'), default=datetime.datetime.now())
timestamp2 = models.DateTimeField(_('Дата'), default=datetime.datetime.now)
В первом случае дата обновится только при запуске скрипта, во втором случае всегда при обращении к методу.

Знаю, что немножко отошел от темы, но думаю Вам поможет хоть как-то.
Хм, интересно, честно говоря не знал что можно засунунть метод туда, а не значение. Попробую. Большое спасибо.



Офлайн

#10 Авг. 29, 2010 03:54:15

DuoV
От:
Зарегистрирован: 2009-12-01
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена даты

Вообщем потестил сейчас. И вариант как я написал в самом начале сам - работает на отлично, то есть меняем дату на системе, обновляем страницу - все красиво меняется. Вот теперь сижу и думаю что не так. Завтра прийду на работу и буду смотреть что не так там. Что то у меня начинают появляться подозрения что дело совсем не в today().



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version