Jak sformatować DateTimeField w Django Admin na czas lokalny?
Jak sformatować DateTimeField w Adminie zgodnie z czasem lokalnym i strefą czasową?
Moje ustawienia.py:
TIME_ZONE = 'Europe/Bratislava'
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
pakiet pytz jest zainstalowany.
Model:
class Material(models.Model):
category = models.ForeignKey(Category, null=True, blank=True)
code = models.CharField(max_length=10)
description = models.CharField(max_length=30, blank=True, null=True)
modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
Próbowałem także formatowania daty w ustawieniach, nic z tego nie zmieniło sposobu konwertowania obiektu datetime na ciąg znaków na ekranie listy administracyjnej:
DATETIME_FORMAT = 'd N Y'
DATE_FORMAT = 'd N Y'
W datetime bazy danych jest przechowywany poprawnie, „2012-11-20 08: 57: 15.901341 + 01”. Ale wyświetlana w admin jest zawsze w UTC.
Mogę przygotować metody w ModelAdmin do obsługi formatu, ale to nie jest tak naprawdę DRY, jak chciałbym, aby moje klasy administracyjne wyglądały tak:
from django.utils.timezone import localtime
class MaterialAdmin(admin.ModelAdmin):
list_display = ('code', 'modified_local', 'created')
def modified_local(self, row):
return localtime(row.modified)
modified_local.admin_order_field = 'modified'
modified_local.short_description = 'Modified'