[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django-Partie 7-

Cette fois, nous personnaliserons le formulaire d'administration.

personnaliser le formulaire d'administration

Vérifions le formulaire d'administration actuel.

polls/admin.py


from django.contrib import admin

# Register your models here.
from .models import Question

admin.site.register(Question)

Lorsque vous accédez à "http://127.0.0.1:8000/admin/polls/question/5/change/", le message suivant s'affiche. image.png

Modifier admin.py ①

Modifiez admin.py pour personnaliser le formulaire d'administration. Créez une classe QuestionAdmin et modifiez l'ordre d'affichage de question_text et pub_date. À l'origine, c'était pub_date sous question_text, mais dans le code ci-dessous, ce sera question_text sous 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

Modifier admin.py ②

polls/admin.py



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

image.png

Ajouter des objets relationnels

J'ai pu confirmer que la question est affichée, mais n'est-il pas possible d'afficher le choix associé à la question en même temps? Nous allons procéder avec le tutoriel.

polls/admin.py


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

admin.site.register(Choice)

Le choix a été ajouté. image.png Les questions associées à l'option "Le ciel" ne peuvent pas être confirmées sans ouvrir l'option. image.png Vous pouvez voir que l'option "Le ciel" est liée à la question "Qu'est-ce que c'est?". image.png

Affiche les questions et les choix en même temps. ChoiceInline spécifie qu'il souhaite afficher trois champs de choix vides.

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)

La question "Qu'est-ce que c'est?" A des choix "Pas beaucoup" et "Le ciel" avec trois champs de choix vides. 。 image.png

Puisque l'affichage des choix est verticalement long, modifions-le pour qu'il s'affiche au format tableau.

polls/admin.py


class ChoiceInline(admin.TabularInline):

Il est affiché dans un format de tableau et est soigné. image.png

Personnalisez la page de la liste des modifications sur le site d'administration

La liste des modifications est le contenu affiché sur "http://127.0.0.1:8000/admin/ / /".

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

Ouvrez "http://127.0.0.1:8000/admin/polls/question/". Jusqu'à présent, seule la colonne "TEXTE DE LA QUESTION" était disponible, mais de nouvelles colonnes "DONNÉES PUBLIÉES" et "PUBLIÉES RÉCEMMENT?" Ont été ajoutées.

Les colonnes "QUESTION TEXT" et "DATA PUBLISHED" prennent en charge le tri. En revanche, la colonne "PUBLIÉ RÉCEMMENT?" Ne prend pas en charge le tri, car elle affiche la valeur de retour de la méthode. image.png

Utilisons le filtre pour affiner par "PUBLIÉ RÉCEMMENT?".

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?'

Ajoutez list_filter.

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']

Le filtre s'affiche dans la barre latérale. Vous pouvez affiner par "Toutes les périodes (" N'importe quelle date ")" "Aujourd'hui (" Aujourd'hui ")" "Cette semaine (" 7 derniers jours ")" "Ce mois (" Ce mois ")" "Cette année (" Cette année ")" Je vais.

image.png

Ensuite, créez une fenêtre de recherche.

polls/admin.py


search_fields = ['question_text']

Une fenêtre de recherche était affichée en haut de l'écran.

image.png

C'est la fin. Merci beaucoup.

Recommended Posts

[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django-Partie 7-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 1-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 2
[Débutant] [Python / Django] Un ingénieur web débutant a essayé un didacticiel Django - Partie 0-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un tutoriel Django - Partie 5
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un tutoriel Django - Partie 6
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 4
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 3
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
(Python) Essayez de développer une application Web en utilisant Django
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Web scraping débutant avec python
Un ingénieur en arts libéraux a essayé de frapper 100 processus linguistiques en Python 02
Un débutant en python a essayé de faire un stage dans une entreprise informatique
Un ingénieur en arts libéraux a essayé de frapper 100 processus linguistiques en Python 01
Un ingénieur en arts libéraux a essayé de frapper 100 processus linguistiques en Python 00
[Python / Django] Créer une API Web qui répond au format JSON
J'ai essayé webScraping avec python.
Créer une application Web avec Django
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
le codeur Web a essayé d'exceller en Python
Les débutants en Python ont essayé d'utiliser Bottle et cela a fonctionné facilement de manière inattendue
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
Une introduction aux applications Web Python auto-conçues pour un ingénieur Web de troisième année paresseux
[Débutant] Scrapage Web Python facile à comprendre à l'aide de Google Colaboratory
J'ai une question! (Python, django) Facile
Démonisez une application Web Python avec Supervisor
J'ai essayé un langage fonctionnel avec Python
[Python] Une application web rapide avec Bottle!
J'ai créé une API Web
Utiliser Django à partir d'un script Python local
Exécutez une application Web Python avec Docker
Créez un framework Web avec Python! (1)
J'ai essayé de comparer le cadre d'application Web
Créez un framework Web avec Python! (2)
J'ai fait une application WEB avec Django
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Enquête sur le chatbot jour 2]
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Processus de développement du jour 1]
Les débutants ont essayé de créer une application Web native pour le cloud à l'aide de Datastore / GAE
J'ai recherché les compétences nécessaires pour devenir ingénieur web avec Python
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
Comment ouvrir un navigateur Web à partir de python
J'ai essayé le web scraping en utilisant python et sélénium
Python Web Framework Django vs Pyramid vs Flask Décembre 2015
J'ai essayé de jouer à un jeu de frappe avec Python
Démarrez un serveur Web Python simple avec Docker
[Python] Créer un environnement de développement Django avec Docker
[Python] Dessinez un Mickey Mouse avec une tortue [Débutant]
Créer une carte Web en utilisant Python et GDAL
Étapes pour développer une application Web en Python
[Python] Préparation au développement Web (création d'un environnement virtuel)
J'ai essayé de lire un fichier CSV en utilisant Python
Enregistrement de l'examen de base de la certification d'ingénieur Python3 pour débutant en programmation
Lancer un serveur Web avec Python et Flask
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 2