Как получить timezone.today в качестве значения по умолчанию? - PullRequest
0 голосов
/ 31 марта 2019

Я хотел бы установить значение по умолчанию для моего DateField на сегодняшнюю дату в часовом поясе UTC.

Если я поставлю datetime.now(timezone.utc).date(), это будет фиксированное значение, которое вызывается при перезапуске сервера.

Если я поставлю timezone.now, он вернет объект даты-времени, а не объект дня.

Как получить текущую дату в часовом поясе UTC?Вызываемая функция (без скобок в конце). Потому что, если я поставлю timezone.now().date, не будет ли она вызываться только при перезапуске сервера, а не каждый раз, когда объект создается / обновляется?

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Похоже, вы в основном решили свою проблему. Просто создайте «вызываемую функцию».

from datetime import datetime

def today_utc():
    return datetime.utcnow().date()

class MyModel(models.Model):
    my_field = models.DateField(default=today_utc)
0 голосов
/ 31 марта 2019

В вашем файле settings.py вы должны установить эту переменную:

USE_TZ = True

Теперь в вашем коде, если вы хотите получить правильную дату utc сейчас, вы делаете это:

from django.utils import timezone

today = timezone.now().date()

Если в вашей модели есть поле DateField, пример: my_field, сделайте так:

my_field = models.DateFiel(default=date.today)

Если у вас есть поле с именем my_field, установите DateTimeField, сделайте так:

my_field = models.DateTimeField(default=timezone.now)

И прочитайте документ

...