Wie format DateTimeField in Django-Admin-localtime?

Formatieren DateTimeField in Admin nach localtime und Zeitzone ?

Meine settings.py:

    TIME_ZONE = 'Europe/Bratislava'
    LANGUAGE_CODE = 'en-us'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True

pytz-Paket installiert ist.

Modell:

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)

Habe auch versucht, einige Formatierung des Datums in den Einstellungen, nichts davon verändert die Art und Weise datetime-Objekt in eine Zeichenfolge konvertiert in admin-Liste anzeigen:

DATETIME_FORMAT = 'd N Y'
DATE_FORMAT = 'd N Y'

In der Datenbank datetime gespeichert ist korrekt, "2012-11-20 08:57:15.901341+01". Aber bei der Anzeige im admin, es wird immer in UTC.

Kann ich vorbereiten Methoden in ModelAdmin zu handhaben-format, aber das ist nicht wirklich TROCKEN, da würde ich gerne meinen admin-Klassen Aussehen:

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'
  • Was bedeutet die from django.utils.formats import localize; localize(localtime(row.modified)) Ausgabe in pyshell?
  • >>> Reihe.geändert datetime.datetime(2012, 11, 20, 7, 57, 15, 901000, tzinfo=<UTC - >) >>> lokalisieren(localtime(Zeile.modifiziert)) u'Nov. 20, 2012, 8:57 Uhr'
  • Lösung mit der Festlegung von Immobilien wie Methode ist SCHLECHT, und ist eine Art von BAD-design-Muster. Haben Sie einen Blick auf meine Lösung/Konfiguration.
InformationsquelleAutor Edke | 2012-11-20
Schreibe einen Kommentar