У меня есть модель User
с полем timezone
:
class User(AbstractBaseUser, PermissionsMixin):
timezone = models.CharField(
max_length=64,
choices=[(tz, tz) for tz in pytz.common_timezones],
default="UTC",
)
При просмотре в Django admin это создает раскрывающийся список часовых поясов, но только из имена. Я хотел бы динамически генерировать метки для этого раскрывающегося списка, которые добавляют смещение в качестве префикса (например, +02:00
) и сортируют список по этому. Я знаю, что могу создать их, выполнив что-то вроде:
choices=[
(tz, display_with_offset(tz))
for tz in pytz.common_timezones
],
, где display_with_offset
генерирует требуемую метку, но я думаю, что это вычислит ее только при выполнении миграций и будет игнорировать любые изменения перехода на летнее время, которые В некоторых регионах это происходит в течение года.
Мой админ-файл выглядит следующим образом:
class MyUserAdmin(UserAdmin):
fieldsets = [
("Info", {"fields": ("timezone")}),
]
admin.site.register(models.User, MyUserAdmin)
Есть ли способ динамической установки выпадающих меток?