[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 7-

Dieses Mal werden wir das Administrationsformular anpassen.

Admin-Formular anpassen

Lassen Sie uns das aktuelle Administrationsformular überprüfen.

polls/admin.py


from django.contrib import admin

# Register your models here.
from .models import Question

admin.site.register(Question)

Wenn Sie auf "http://127.0.0.1:8000/admin/polls/question/5/change/" zugreifen, wird die folgende Meldung angezeigt. image.png

Ändern Sie admin.py ①

Ändern Sie admin.py, um das Administrationsformular anzupassen. Erstellen Sie eine QuestionAdmin-Klasse und ändern Sie die Anzeigereihenfolge von question_text und pub_date. Ursprünglich war es pub_date unter question_text, aber im folgenden Code ist es question_text unter pub_date.

polls/admin.py


from django.contrib import admin

# Register your models here.
from .models import Question


class QuestionAdmin(admin.ModelAdmin):
    fields = ['question_text', 'pub_date']


admin.site.register(Question, QuestionAdmin)

image.png

Ändern Sie admin.py ②

polls/admin.py



class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date']}),
    ]

image.png

Fügen Sie relationale Objekte hinzu

Ich konnte bestätigen, dass die Frage angezeigt wird. Ist es jedoch nicht möglich, die mit der Frage verknüpfte Auswahl gleichzeitig anzuzeigen? Wir werden mit dem Tutorial fortfahren.

polls/admin.py


from django.contrib import admin
from .models import Question, Choice

admin.site.register(Choice)

Auswahl wurde hinzugefügt. image.png Fragen im Zusammenhang mit der Option "Der Himmel" können nicht bestätigt werden, ohne die Option zu öffnen. image.png Sie können sehen, dass die Option "Der Himmel" mit der Frage "Was ist das?" Verknüpft ist. image.png

Zeigt gleichzeitig Fragen und Auswahlmöglichkeiten an. ChoiceInline gibt an, dass drei leere Auswahlfelder angezeigt werden sollen.

polls/admin.py


from django.contrib import admin

# Register your models here.
from .models import Question, Choice


class ChoiceInline(admin.StackedInline):
    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)

Die Frage "Was ist das?" Hat die Auswahlmöglichkeiten "Nicht viel" und "Der Himmel" mit drei leeren Auswahlfeldern. 。 image.png

Da die Auswahlanzeige vertikal lang ist, ändern wir sie so, dass sie im Tabellenformat angezeigt wird.

polls/admin.py


class ChoiceInline(admin.TabularInline):

Es wird in einem Tabellenformat angezeigt und ist ordentlich. image.png

Passen Sie die Seite mit der Änderungsliste auf der Administrationsseite an

Die Änderungsliste ist der Inhalt, der unter "http://127.0.0.1:8000/admin/ / /" angezeigt wird.

polls/admin.py


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]
    list_display = ('question_text', 'pub_date', 'was_published_recently')

Öffnen Sie "http://127.0.0.1:8000/admin/polls/question/". Bisher war nur die Spalte "QUESTION TEXT" verfügbar, es wurden jedoch neue Spalten "DATA PUBLISHED" und "PUBLISHED RECENTLY?" Hinzugefügt.

Die Spalten "QUESTION TEXT" und "DATA PUBLISHED" unterstützen die Sortierung. Andererseits unterstützt die Spalte "ZULETZT VERÖFFENTLICHT?" Die Sortierung nicht, da sie den Rückgabewert der Methode anzeigt. image.png

Verwenden wir den Filter, um ihn auf "ZULETZT VERÖFFENTLICHT?" Eingrenzen zu können.

polls/models.py


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('data published')

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return timezone.now() - datetime.timedelta(days=1) <= self.pub_date <= timezone.now()
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?'

Füge list_filter hinzu.

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]
    list_display = ('question_text', 'pub_date', 'was_published_recently')
    list_filter = ['pub_date']

Der Filter wird in der Seitenleiste angezeigt. Sie können nach "Alle Zeiträume (" Beliebiges Datum ")" "Heute (" Heute ")" "Diese Woche (" Letzte 7 Tage ")" "Dieser Monat (" Dieser Monat ")" "Dieses Jahr (" Dieses Jahr ")" eingrenzen. Ich werde.

image.png

Erstellen Sie als Nächstes ein Suchfenster.

polls/admin.py


search_fields = ['question_text']

Oben auf dem Bildschirm wurde ein Suchfenster angezeigt.

image.png

Das ist das Ende. Vielen Dank.

Recommended Posts

[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 7-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 1-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 2-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 0-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 5-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 6-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 4-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 3-
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
CTF-Anfänger haben versucht, einen Problemserver (Web) zu erstellen [Problem]
Web Scraping Anfänger mit Python
Ein Ingenieur für freie Künste hat versucht, 100 Sprachprozesse in Python 02 zu klopfen
Python-Anfänger versuchte, bei einem IT-Unternehmen zu praktizieren
Ein Ingenieur für freie Künste hat versucht, 100 Sprachprozesse in Python 01 zu klopfen
Ein Ingenieur für freie Künste hat versucht, 100 Sprachprozesse in Python 00 zu klopfen
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
Ich habe versucht, WebScraping mit Python.
Erstellen Sie eine Webanwendung mit Django
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
Webcodierer versucht Excel in Python
Python-Anfänger haben versucht, Bottle zu verwenden, und es hat unerwartet leicht funktioniert
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
Eine Einführung in selbst erstellte Python-Webanwendungen für einen trägen Webingenieur im dritten Jahr
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
Ich habe eine Frage! (Python, Django) Einfach
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Ich habe eine funktionale Sprache mit Python ausprobiert
[Python] Eine schnelle Webanwendung mit Bottle!
Ich habe eine Web-API erstellt
Verwenden Sie Django aus einem lokalen Python-Skript
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie ein Webframework mit Python! (1)
Ich habe versucht, das Webanwendungs-Framework zu vergleichen
Erstellen Sie ein Webframework mit Python! (2)
Ich habe eine WEB-Bewerbung bei Django gemacht
Ein Python-Anfänger hat versucht, bei einem IT-Unternehmen zu praktizieren [Tag 2 Chatbot-Umfrage]
Python-Anfänger versuchte, bei einem IT-Unternehmen zu praktizieren [Tag 1 Entwicklungsprozess]
Anfänger haben versucht, eine Cloud-native Webanwendung mit Datastore / GAE zu erstellen
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
Maschinelles Lernen eines jungen Ingenieurs Teil 1
So öffnen Sie einen Webbrowser über Python
Ich habe versucht, Web-Scraping mit Python und Selen
Python Web Framework Django gegen Pyramide gegen Flasche Dezember 2015
Ich habe versucht, mit Python ein Tippspiel zu spielen
Starten Sie mit Docker einen einfachen Python-Webserver
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
[Python] Zeichne eine Mickey Mouse mit Turtle [Anfänger]
Erstellen Sie eine Webmap mit Python und GDAL
Schritte zum Entwickeln einer Webanwendung in Python
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Programmieranfänger Python3 Ingenieur Zertifizierung Grundprüfungsprotokoll
Starten Sie einen Webserver mit Python und Flask
Maschinelles Lernen eines jungen Ingenieurs Teil 2