Wie kommt es, dass mein Feld "Datum" im Administrationssystem nicht angezeigt wird?
In meiner admin.py Datei habe ich
from django.contrib import admin
from glasses.players.models import *
admin.site.register(Rating)
und das Bewertungsmodell hat ein Feld namens "Datum", das so aussieht
date = models.DateTimeField(editable=True, auto_now_add=True)
Innerhalb des Administrationssystems wird das Feld jedoch nicht angezeigt, obwohl editable
es auf gesetzt ist True
.
Hat jemand eine Idee?
quelle
auto_now_add
über den Administrator zu bearbeiten, nachdem der Eintrag zum ersten Mal erstellt wurde?Wenn Sie das Datum wirklich im Admin-Bereich sehen möchten, können Sie
readonly_fields
in admin.py Folgendes hinzufügen :Jedes von Ihnen angegebene Feld wird zuletzt nach den bearbeitbaren Feldern hinzugefügt. Um die Reihenfolge zu steuern, können Sie die
fields
Optionen verwenden.Weitere Informationen finden Sie in den Django-Dokumenten .
quelle
fields
Sie auch Ihr Feld darin einfügen, damit Sie es sowohl inreadonly_fields
als auchfields
sonst benötigen .fieldsets
, gerade heute auf dieses Problem gestoßen.auto_now_add=True
unter Django 1.9 nicht zu funktionieren . Eine (Art) Problemumgehung besteht darin, sielist_display
stattdessen dem Tupel hinzuzufügen . Bearbeiten: Es funktioniert, wenn Sie Ihr Feld auch zufields
@BjornTipling hinzufügen .Major Hack:
Wenn Sie dies wirklich tun müssen (wie ich), können Sie es jederzeit umgehen, indem Sie das Feld sofort als "bearbeitbar" festlegen und das Feld wie folgt definieren:
Dadurch kann das Feld bearbeitet werden, sodass Sie es tatsächlich ändern können. Es scheint gut zu funktionieren, zumindest mit der MySQL-Backing-Engine. Ich kann für certian nicht sagen, ob andere Sicherungsspeicher diese Daten in der Datenbank unveränderlich machen und somit ein Problem verursachen würden, wenn versucht wird, sie zu bearbeiten. Verwenden Sie sie daher mit Vorsicht .
quelle
Abhängig von Ihren spezifischen Anforderungen und eventuellen Verhaltensunterschieden können Sie Folgendes tun:
Das Standardfeld kann folgendermaßen verwendet werden: https://docs.djangoproject.com/de/dev/ref/models/fields/#default
Dies kann nicht bearbeitet werden
False
quelle
from django.utils.timezone import now
anstelle von verwendendatetime.now
, aber das sieht vielversprechend aus.Dies hat möglicherweise damit zu tun, dass auto_now_add wahr ist. Anstelle dieses Parameters zum Erfassen des Datums beim Hinzufügen können Sie möglicherweise die Modellspeichermethode überschreiben, um die Datumszeit einzufügen, wenn die ID null ist.
quelle
auto_now
wird nicht verwendet undeditable=False
. +1Wenn Sie möchten, dass ein Feld in der Liste aller Ihrer Einträge sichtbar ist (wenn Sie in den Administratoren auf ein Modell klicken) und nicht, wenn Sie diesen bestimmten Eintrag öffnen, dann -
'name' ist Ihr Hauptfeld oder ein anderes Feld, das Sie im Admin-Bereich anzeigen möchten.
Auf diese Weise können Sie alle Spalten angeben, die Sie anzeigen möchten.
quelle
Sie können das nicht tun, überprüfen Sie die Dokumentation
auto_now und auto_now_add sind alle nicht bearbeitbare Felder und können nicht überschrieben werden ...
quelle