Будет ли динамический список вариантов в модели Django оцениваться при миграции модели или при попытке пользователя выбрать вариант для модели?

Код

Допустим, у меня есть следующая модель:

class Course(models.Model):

    title = models.CharField(max_length=48)

    YEAR_CHOICES = [(r, r) for r in range(
            datetime.date.today().year-1, datetime.date.today().year+2
        )
    ]
    year = models.IntegerField(_('year'), choices=YEAR_CHOICES)

Вопрос

Будут ли операторы datetime.date.today() оцениваться непосредственно при переносе модели, или они будут оцениваться каждый раз, когда пользователь обращается к форме, чтобы установить значение year для модели Course?

Другими словами, мой YEAR_CHOICES код выше застыл на моменте миграции модели или он будет динамически обновляться с течением времени?

Результаты тестирования

Я провел тестирование, используя минуты вместо лет, и результаты оказались довольно удивительными:

Заданная функция...

from django.db import models
import datetime

def minute_choices_range():
    now_minute = datetime.datetime.now().minute
    return [(r, r) for r in range(
            now_minute-1, now_minute+2
        )
    ]

Постоянно обновляется

(значения времени, которые синхронизировались со временем обращения к странице)

class Course(models.Model):
    minute = models.IntegerField(choices=minute_choices_range)

Застрял на время миграции

(Значения времени, которые застряли на момент миграции модели)

class Course(models.Model):
    minute = models.IntegerField(choices=minute_choices_range())

И учитывая эту функцию...

from django.db import models
import datetime

def current_min():
    return datetime.datetime.now().minute

Застрял на время миграции

(Значения времени, которые застряли на момент миграции модели)

class Course(models.Model):
    MINUTE_CHOICES = [(r, r) for r in range(
            current_min()-1, current_min()+2
        )
    ]

    minute = models.IntegerField(choices=MINUTE_CHOICES)

А вот с этой функцией у меня не сложилось, но она тоже привела к "застрявшему времени" (время, которое застряло на времени миграции)

class Course(models.Model):
    MINUTE_CHOICES = [(r, r) for r in range(
            datetime.datetime.now().minute-1, datetime.datetime.now().minute+2
        )
    ]

    minute = models.IntegerField(choices=MINUTE_CHOICES)

Вернуться на верх