Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 7 ~

Einführung

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.

Grundlegende Anpassung

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.

Fügen Sie ein Objekt in eine verwandte Tabelle ein



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.

Passen Sie die Seite an, die das Modell indiziert

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.

Schließlich

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.

Referenz

[Python] Anpassung der Django-Verwaltungssite (Anzeigeoberfläche) [Django Management Screen Reverse Memo] https://qiita.com/zenwerk/items/044c149d93db097cdaf8) Django-Dokument

Recommended Posts

Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 5 ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps mit Python ~ Django Tutorial 4 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 6 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 7 ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps in Python ~ Indexseite ~
Lernverlauf für die Teilnahme an der Entwicklung von Team-Apps in Python ~ Denken Sie ein wenig über die Definition von Anforderungen nach ~
Lernverlauf für die Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Ergänzung der Grundelemente und Aufbau der jupyterLab-Umgebung ~
Lernverlauf zur Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Build Docker / Django / Nginx / MariaDB-Umgebung ~
Lernverlauf zur Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Nach Abschluss von "Einführung in Python 3" des Paiza-Lernens ~
Python Django Tutorial (2)
Python Django Tutorial (8)
Python Django Tutorial (6)
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Python Django Tutorial (4)
Boost.NumPy Tutorial zum Erweitern von Python in C ++ (Übung)
[Implementierung zum Lernen] Implementieren Sie Stratified Sampling in Python (1)
Lernnotizen für die Migrationsfunktion im Django-Framework (2)
Zusammenfassung des Python Django-Tutorials
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Verzeichnisstruktur für die testgetriebene Entwicklung mit pytest in python
App-Entwicklung zum Twittern in Python aus Visual Studio 2017
Lernnotizen für die Migrationsfunktion im Django-Framework (3)
Lernnotizen für die Migrationsfunktion im Django-Framework (1)
Tiefes Lernen mit Python Kapitel 2 (Material für runde Vorlesung)
Framework-Entwicklung mit Python
Entwicklungsumgebung in Python
Entwicklung des AWS SDK für Python (Boto3) in Visual Studio 2017
Slackbot-Entwicklung in Python
Tutorial für die testgetriebene Entwicklung (TDD) mit Flask-1 Test Client Edition
Lernablauf für Python-Anfänger
Python-Lernplan für KI-Lernen
Techniken zum Sortieren in Python
Python-Entwicklung mit Visual Studio 2017
Qt für Python App Selbstaktualisierung
Python Django Tutorial Cheet Sheet
Checkios Empfehlung zum Erlernen von Python
[Zum Organisieren] Python-Entwicklungsumgebung
Python-Entwicklung mit Visual Studio
Über "für _ in range ():" von Python
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Ändern Sie automatisch die Größe von Screenshots für den App Store für jeden Bildschirm in Python
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Suchen Sie mit Python nach externen Befehlen
8 häufig verwendete Befehle in Python Django
Web-Lehrmaterialien zum Erlernen von Python
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Optionen für die Python-Entwicklungsumgebung für Mai 2020
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Emacs-Einstellungen für die Python-Entwicklungsumgebung
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Implementierte Perceptron-Lernregeln in Python
Führen Sie unittest in Python aus (für Anfänger)
Bereiten Sie eine Python-Entwicklungsumgebung für jedes Projekt in einer Windows-Umgebung vor (VSCode + virtualEnvWrapper + Pylint).
Entwicklung der MTG Card Evaluation Posting Site ~ Veröffentlichung der Django App in 5 Wochen ~