Für diejenigen, die sagen: "Ich habe die Django-Administrationsseite noch nie angepasst." Dies ist eine Anfängerausgabe.
Es scheint, dass es ohne Anpassung verwendet werden kann, aber wenn andere als Ingenieure es berühren, ist es standardmäßig ein wenig einsam?
Anstelle einer detaillierten Erklärung handelt es sich um einen Stil, der bei Google schnell gute Begriffe aufwirft. Es ist schwer, es richtig zusammenzusetzen. .. ..
Django-Dokumentation https://docs.djangoproject.com/en/3.0/ref/contrib/admin/
Erstellen Sie grundsätzlich eine Unterklasse der Klasse "ModelAdmin" und beschreiben Sie den Anpassungsinhalt. Wenn Sie beispielsweise ein Modell mit dem Namen SampleModel anpassen möchten, gehen Sie wie folgt vor.
admin.py
from django.contrib import admin
#Nennen Sie es normalerweise "Modellname + Admin".
class SampleModelAdmin(admin.ModelAdmin):
'''
Beschreiben der Anpassungsinhalte in dieser Klasse
'''
#Wenden Sie SampleModelAdmin auf SampleModel an
admin.site.register(SampleModel, SampleModelAdmin)
Schreiben Sie ab diesem Zeitpunkt nur noch die Beschreibung in die ModelAdmin-Klasse. Zum Beispiel
def hoge():
return
Wenn Sie schreiben, in der Tat
admin.py
class SampleModelAdmin(admin.ModelAdmin):
def hoge():
return
Bitte lesen Sie als.
Der Spaltenname wird oben in der Datensatzliste angezeigt. Legen Sie jedoch fest, welche Spalte angezeigt werden soll. Das folgende Beispiel zeigt, wenn das Modell Felder mit den Namen text und updated_at enthält.
list_display = ('__str__', 'text', 'updated_at') #Zeigen Sie diese drei Spalten an
Als nächstes, wenn Sie einen Wert anzeigen möchten, der nicht im Feld enthalten ist.
list_display = ('__str__', 'text', 'updated_at', 'get_owner_name')
def get_owner_name(self, obj):
#Das zweite Argument, obj, repräsentiert den Datensatz selbst
return "I am owner"
get_owner_name.short_description = 'Besitzername'
Dadurch wird eine Spalte mit dem Namen "Eigentümername" hinzugefügt, in der in allen Datensätzen "Ich bin Eigentümer" angezeigt wird.
Oben befindet sich ein Suchfeld, aber Sie können das Suchziel eingrenzen.
# SampleModel.text, SampleModel.updated_at, SampleModel.owner.Suchen Sie nach dem Benutzernamen
search_fields = ('text', 'updated_at', 'owner__username`)
Standardmäßig sollte eine Operation mit dem Namen "Ausgewählte
actions = ['my_custom_action']
def my_custom_action(self, request, queryset):
#Etwas zu verarbeiten
return None
my_custom_action.short_description = 'Aktion nur für mich'
Wenn Sie "return None" festlegen, wird nach Abschluss des Vorgangs nichts unternommen. Sie können jedoch beispielsweise eine Vorlage zurückgeben und Seitenübergänge durchführen.
Schreiben Sie dies in die ursprüngliche Model
-Klasse anstelle von ModelAdmin
.
class SampleModel(models.Model):
class Meta:
verbose_name = 'Beispielmodell'
verbose_name_plural = 'Liste der Beispielmodelle'
list_display_links = ('text',)
Wir haben die Anpassung des Suchziels eingeführt. Sie können jedoch auch anpassen, welche Art von Suche tatsächlich ausgeführt wird, wenn ein Suchwort (eine Abfrage) angegeben wird. Dies ist langwierig, daher gebe ich Ihnen nur einen Überblick, definiere jedoch die folgende Funktion, um den Suchvorgang zu überschreiben.
def get_changelist(self, request, **kwargs):
Wenn Sie das oben Genannte anpassen können, wären Sie dann zunächst nicht zufrieden? Ich werde in einem anderen Artikel über das Anpassen der Admin-Seitenvorlage selbst und Seitenübergänge innerhalb von admi schreiben.
Recommended Posts