[PYTHON] [Django] Möchten Sie die Administrationsseite anpassen?

Einführung

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/

ModelAdmin-Klasse

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.

Welche Spalte soll angezeigt werden?

スクリーンショット 2020-08-08 20.38.22.png

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.

Legen Sie das Suchziel fest

スクリーンショット 2020-08-08 21.08.22のコピー.png

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`)

Fügen Sie eine Operation hinzu

スクリーンショット 2020-08-08 21.32.13のコピー.png

Standardmäßig sollte eine Operation mit dem Namen "Ausgewählte löschen" vorhanden sein. Die selbst erstellten Aktionen werden wie unten gezeigt im Listenformat unter "Aktionen" beschrieben. Auch wenn sie hier nicht explizit enthalten sind, bleibt "Ausgewählten löschen" weiterhin vorhanden.

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.

Ändern Sie den Anzeigenamen des Modells

スクリーンショット 2020-08-08 21.32.13.png

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'

Möchten Sie einen Link in das Feld einfügen


list_display_links = ('text',)

Erweitert: Suchprozess anpassen

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):

Schließlich

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

[Django] Möchten Sie die Administrationsseite anpassen?
Optimieren der Django-Administrationsseite
Ich kann mich mit Django 3 nicht auf der Admin-Seite anmelden
Nicht angemeldeter Django-Benutzer möchte zu login.html wechseln
[Python] Führen Sie UIKit3 in das Django-Projekt ein
Möchten Sie Python-Dekoratoren Typhinweise hinzufügen?
Django Tutorial Zusammenfassung für Anfänger von Anfängern ⑦ (Customize Admin)
Ich möchte Datetime.now in Djangos Test reparieren
Ich möchte das Erscheinungsbild von zabbix anpassen
Passen Sie die Modellseite des Django-Verwaltungsbildschirms an
Ich möchte eine Django-App auf Heroku hochladen
Python-Anfänger versucht, dem Administrator von Django eine grundlegende Authentifizierung hinzuzufügen
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Schritte von der Installation von Django bis zur Anzeige der HTML-Seite
TemplateView-Muster, die Sie zuerst in Django lernen möchten
Wenn Sie mit dem Django REST-Framework filtern möchten
Einmaliges Anmelden bei der Django-Anwendung mit AWS SSO
[Django] So leiten Sie nicht angemeldete Benutzer zur Anmeldeseite um
Initialisieren Sie die Django-App
Django kann nicht importiert werden
Aktualisieren Sie die Django-Version 1.11.1 auf 2.2
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
[Django] Ich möchte mich nach einer neuen Registrierung automatisch anmelden
Wenn Sie möchten, dass Ihre Kollegen dieselbe Sprache verwenden
Wenn Sie den Benutzernamen und das Passwort des Verwaltungsbildschirms in Django vergessen haben
[Django] Nach dem Absenden mit dem POST-Formular zur vorherigen Seite weiterleiten