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.
models.TimeField bei der Erfassung mit Sekunden bei der Ausgabe ohne Sekunden
-
- User
- Beiträge: 219
- Registriert: Donnerstag 21. Juli 2011, 07:01
- Wohnort: Stade / Hamburg
- Kontaktdaten:
Da hilft dir der Template-Filter "time":
https://docs.djangoproject.com/en/3.1/r ... tins/#time
Und hier die Referenz:
https://docs.djangoproject.com/en/3.1/r ... specifiers
https://docs.djangoproject.com/en/3.1/r ... tins/#time
Und hier die Referenz:
https://docs.djangoproject.com/en/3.1/r ... specifiers
Code: Alles auswählen
{{ value|time:"H:i:s" }}
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.
Folgendes steht nun in meiner html-Datei und löst das Problem wenn ich eine HTML-Datei für die Anzeige nutze.
Code: Alles auswählen
<td>{{ instance.result_value|time:"H:i:s" }}</td>
Danke und Gruß
Pythoner
Pythoner
-
- User
- Beiträge: 219
- Registriert: Donnerstag 21. Juli 2011, 07:01
- Wohnort: Stade / Hamburg
- Kontaktdaten:
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.
(ungetestet - Antwort in Anlehnung an: https://stackoverflow.com/questions/482 ... -hour-time)
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},
}
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.
Hier sind zwei Screenshots:
https://github.com/ad-software/running_ ... /issues/23
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')
https://github.com/ad-software/running_ ... /issues/23
Danke und Gruß
Pythoner
Pythoner
-
- User
- Beiträge: 219
- Registriert: Donnerstag 21. Juli 2011, 07:01
- Wohnort: Stade / Hamburg
- Kontaktdaten:
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', )