Seite 1 von 1
models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Dienstag 22. Dezember 2020, 21:51
von pythoner
Ich habe in meinem Projekt eine Erfassung von einer Zeit mit
models.TimeField(auto_now=False, auto_now_add=False, default="00:00:00", help_text="hh:mm:ss")
eingebaut. In der Erfassung kann ich Stunden, Minuten und Sekunden erfassen. Das steht dann auch so in der Datenbank darin.
Aber in der Ausgabe werden keine Sekunden angezeigt.
Wie kann ich das Format der Ausgabe anpassen und wieso ist das Format der Erfassung und der Ausgabe unterschiedlich?
In der Datei settings.py steht USE_L10N = True. Wenn ich das auf false setze ist die Ausgabe mit Vormittag und weiterhin keine Sekunden.
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Mittwoch 23. Dezember 2020, 09:45
von Bolitho
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Mittwoch 23. Dezember 2020, 12:36
von pythoner
Vielen Dank für Hilfe.
Folgendes steht nun in meiner html-Datei und löst das Problem wenn ich eine HTML-Datei für die Anzeige nutze.
Gibt es auch eine Möglichkeit die Formatierung im Admin-Bereich anzupassen? Dort wird nämlich auch bei der Anzeige der Zeit die Sekunde abgeschnitten.
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Mittwoch 23. Dezember 2020, 15:00
von Bolitho
Ja, Du kannst das Feld im Formular überschreiben
https://docs.djangoproject.com/en/3.1/r ... _overrides
Formate:
https://docs.djangoproject.com/en/3.1/r ... ut-formats
z.B.
Code: Alles auswählen
#admin.py
from django.contrib import admin
from django.db import models
# Import our custom widget and our model from where they're defined
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TimeField: {'widget': widgets.TimeInput(format='%H:%M:%S},
}
(ungetestet - Antwort in Anlehnung an:
https://stackoverflow.com/questions/482 ... -hour-time)
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Mittwoch 23. Dezember 2020, 15:29
von pythoner
Die Datenerfassung im Admin-Bereich ist automatisch mit Sekunden, aber bei der Anzeige der Daten im Admin-Bereich werden die Sekunden abgeschnitten.
Mit list_display gebe ich an, was angezeigt werden soll.
Code: Alles auswählen
class ResultAdmin(admin.ModelAdmin):
list_display = ('result_value', 'distance_id', 'agegroup', 'member_id', 'event_id')
Hier sind zwei Screenshots:
https://github.com/ad-software/running_ ... /issues/23
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Mittwoch 23. Dezember 2020, 17:32
von Bolitho
na klar, das geht. Ich löse sowas immer über ein neues "Feld", dass ich im Admin mit einer kurzen Funktion definiere.
Code: Alles auswählen
from django.contrib import admin
from .models import Test
@admin.register(Test)
class TestAdmin(admin.ModelAdmin):
def time_seconds(self, obj):
return obj.time.strftime("%H:%M:%S") # Das Feld im Model heißt 'time' in meinem Beispiel
time_seconds.admin_order_field = 'time'
time_seconds.short_description = 'Zeit'
list_display = ('time_seconds', )
Re: models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
Verfasst: Freitag 25. Dezember 2020, 12:43
von pythoner
Klasse, vielen Dank.
Das ist ja einfach, wenn man es mal gesehen hat.