Dies ist das Ende des grundlegenden Teils des Django-Tutorials. Lassen Sie uns abschließend einen Blick auf das Anpassen der Administrationsseite der App werfen. Django verfügt über eine Funktion namens admin form, mit der Sie Datensätze in einer Tabelle mit einem Browser hinzufügen, aktualisieren und löschen können, ohne SQL wie phpMyAdmin in XAMPP zu verwenden. Wir werden sie daher anpassen.
polls/admin.py
from django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text']
admin.site.register(Question, QuestionAdmin)
Unterhalb der Klasse "QuestionAdmin" befindet sich der benutzerdefinierte Inhalt. Mit anderen Worten, indem Sie für jedes Modell eine Klasse erstellen, können Sie den benutzerdefinierten Inhalt für jede Tabelle ändern. Geben Sie jeden Spaltennamen der durch Migration erstellten Tabelle mit "Felder" an. Zu diesem Zeitpunkt werden sie in der tatsächlichen Anzeigeposition in der Reihenfolge von links angezeigt. Als nächstes vergrößern wir die Felder.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
]
Wenn Sie fields
auf fieldsset
setzen und es auf(field name, {'fields': ['column name']})
setzen, können Sie anzeigen, um welche Informationen es sich bei dieser Spalte handelt.
Zum Beispiel kann ('Datumsinformationen', {'Felder': ['pub_date']})
angezeigt werden, wenn pub_date`` Datumsinformationen
ist.
from .models import Choice, Question
# ...
admin.site.register(Choice)
Importieren Sie das Modell "Choice" und fügen Sie "admin.site.register (Choice)" hinzu. Auf diese Weise können Sie das Modell "Auswahl" bearbeiten. Diesmal gibt es jedoch eine Beziehung, bei der es mehrere Antworten auf eine Frage gibt. Daher ist es praktisch, ein "Auswahl" -Objekt zusammen mit diesem hinzufügen zu können, wenn ein "Frage" -Objekt hinzugefügt wird Ich werde es ändern.
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
Legen Sie das Modell und die Anzahl der Daten fest, die in der Klasse "ChoiceInline" verknüpft werden sollen (im obigen Beispiel enthält ein Objekt "Frage" drei Felder für das Objekt "Auswahl"). Wenn Sie "TabularInline" als Argument angeben, können Sie das Erscheinungsbild des Tabellenformats wie "phpMyAdmin" ändern. Felder mit "Klassen": ["Zusammenbruch"] werden in einem reduzierten Zustand angezeigt. Geben Sie die vorherige Klasse "ChoiceInline" mit "inlines = [ChoiceInline]" an.
Wenn Sie die Standardeinstellung beibehalten, wird auf der Seite, auf der die Datensätze des Modells aufgelistet sind, nur eine Spalte angezeigt (in Django scheint sie als "Änderungsliste" bezeichnet zu werden). Dies ist unpraktisch. Ermöglichen wir daher die Anzeige aller Spalten des Datensatzes. Fügen Sie der Klasse "QuestionAdmin" von "admin.py" die folgenden Elemente hinzu.
polls/admin.py
#Angeben von Spalten, die in der Änderungsliste angezeigt werden sollen
list_display = ('question_text', 'pub_date', 'was_published_recently')
polls/models.py
class Question(models.Model):
#Unterlassung
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date <= now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
Ändern Sie die was_published_recently ()
Methode von models.py
wie oben.
Sie können die Methode detaillierter anpassen, indem Sie ihr Attribute hinzufügen.
Wenn Sie beispielsweise "short_description" angeben, können Sie den Spaltennamen in den angegebenen ändern.
Wenn Sie in admin_order_field
einen Spaltennamen angeben, können Sie die Spalte im Browser sortieren (filtern).
Wenn Sie das Attribut "boolean" angeben, wird anstelle von "True or False" ein XX-Symbol angezeigt.
was_published_recently
hat den Wert True or False
, daher wird es stattdessen als Symbol angezeigt.
Kehren wir noch einmal zu admin.py
zurück.
polls/admin.py
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date', 'was_published_recently')
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
list_filter = ['pub_date']
search_fields = ['question_text']
admin.site.register(Question, QuestionAdmin)
# admin.site.register(Choice)
Die Einstellung von "list_filter = ['pub_date']" ist die Einstellung zum Anzeigen der Filterseitenleiste zusammen mit der Einstellung von "admin_order_field" zuvor.
search_fields = ['question_text']
ist eine Einstellung zum Anzeigen des Suchfelds.
Auf diese Weise können Sie in der Änderungsliste mit dem Suchbegriff suchen, den Sie in diesem Fall in der Spalte "question_text" in das Suchfeld eingefügt haben.
Damit sind alle 7 Kapitel des Django-Tutorials abgeschlossen. Bis zu diesem Punkt enthält dieses Lernprogramm beispielsweise ein Kapitel zum Testen, Bereitstellen und Wiederverwenden als zusätzliches Kapitel. Selbst wenn Sie den Verwaltungsbildschirm dieses Kapitels anpassen, können Sie Vorlagen verwenden, CSS anwenden und Funktionen verwalten. Es gibt viele detailliertere Einstellungen, daher gibt es noch viele Dinge zu tun.
Was den Eindruck betrifft, dass ich das Rennen beendet habe, denke ich, dass Django, einschließlich der Sprache Python, für diejenigen, die mit dem Programmieren von Grund auf neu begonnen haben, etwas schwer zu verstehen ist, aber im Gegenteil, es ist sicher für diejenigen, die andere Sprachen beherrschen. Ich bin der Meinung, dass es möglich sein könnte, zu geringen Lernkosten zu lernen. Von nun an möchte ich mein Verständnis vertiefen, während ich meine eigenen Produkte, einschließlich Teamentwicklungsprojekte, erstelle.
[Python] Anpassung der Django-Verwaltungssite (Anzeigeoberfläche) [Django Management Screen Reverse Memo] https://qiita.com/zenwerk/items/044c149d93db097cdaf8) Django-Dokument
Recommended Posts