C'est la fin de la partie basique du tutoriel Django. Enfin, jetons un œil à la personnalisation de la page d'administration de l'application. Django a une fonction appelée formulaire d'administration qui vous permet d'ajouter, de mettre à jour et de supprimer des enregistrements dans une table avec un navigateur sans utiliser SQL comme phpMyAdmin dans XAMPP, nous allons donc le personnaliser.
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)
Sous la classe QuestionAdmin
se trouve le contenu personnalisé.
En d'autres termes, en créant une classe pour chaque modèle, vous pouvez modifier le contenu personnalisé de chaque table.
Spécifiez chaque nom de colonne de la table créée par migration avec fields
. À ce moment, ils sont affichés dans la position d'affichage réelle dans l'ordre à partir de la gauche.
Ensuite, augmentons les champs.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
]
Si vous définissez fields
sur fieldsset
et que vous le définissez sur(field name, {'fields': ['column name']})
, vous pouvez afficher les informations de cette colonne.
Par exemple, ('Date information', {'fields': ['pub_date']})
peut être affiché comme pub_date
est Date information
.
from .models import Choice, Question
# ...
admin.site.register(Choice)
Importez le modèle Choice
et ajoutez ʻadmin.site.register (Choice). Cela vous permettra d'éditer le modèle «Choice». Cependant, cette fois, c'est une relation qu'il y a plusieurs réponses à une question, il est donc pratique de pouvoir ajouter un objet
Choice avec lui lors de l'ajout d'un objet
Question`, de cette façon Je vais le changer.
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)
Définissez le modèle et le nombre de données à associer dans la classe ChoiceInline
(dans l'exemple ci-dessus, un objet Question
a trois champs pour l'objet Choice
).
Si vous spécifiez TabularInline
comme argument, vous pouvez changer l'apparence du format de la table comme phpMyAdmin
.
Les champs avec «'classes': ['collapse']sont affichés dans un état réduit. Spécifiez la classe
ChoiceInline avec ʻinlines = [ChoiceInline]
.
En fait, si vous conservez la valeur par défaut, une seule colonne sera affichée sur la page qui répertorie les enregistrements du modèle (elle semble s'appeler Change List
dans Django).
Ce n'est pas pratique, rendons donc possible d'afficher toutes les colonnes de l'enregistrement.
Ajoutez les éléments suivants à la classe QuestionAdmin
de ʻadmin.py`.
polls/admin.py
#Spécification des colonnes à afficher dans la liste des modifications
list_display = ('question_text', 'pub_date', 'was_published_recently')
polls/models.py
class Question(models.Model):
#Omission
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?'
Modifiez la méthode was_published_recently ()
de models.py
comme ci-dessus.
Vous pouvez personnaliser la méthode plus en détail en lui ajoutant des attributs.
Par exemple, si vous spécifiez short_description
, vous pouvez remplacer le nom de la colonne par celui spécifié.
Si vous spécifiez un nom de colonne dans ʻadmin_order_field, vous pouvez trier (filtrer) la colonne dans le navigateur. Si vous spécifiez l'attribut «booléen», une icône XX sera affichée à la place de «Vrai ou Faux».
was_published_recently a une valeur de
True ou False, donc il sera affiché comme une icône à la place. Revenons à ʻadmin.py
à nouveau.
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)
Le réglage de list_filter = ['pub_date']
est le réglage pour afficher la barre latérale du filtre avec le réglage de ʻadmin_order_fieldplus tôt.
search_fields = ['question_text']est un paramètre pour afficher la zone de recherche. Cela vous permettra de rechercher dans la
Liste des modifications avec le terme de recherche que vous avez mis dans la colonne
question_text` dans la zone de recherche dans ce cas.
Ceci termine les 7 chapitres du didacticiel Django. Cependant, jusqu'à présent, par exemple, il existe un chapitre sur les tests, le déploiement et la réutilisation en tant que chapitre supplémentaire pour ce didacticiel, et même si vous personnalisez l'écran de gestion de ce chapitre, vous pouvez utiliser des modèles, appliquer du CSS et gérer des fonctions. Il existe de nombreux paramètres plus détaillés, il reste donc beaucoup de choses à faire.
Quant à l'impression que j'ai terminé la course, je pense que Django, y compris le langage Python, est un peu difficile à comprendre pour ceux qui ont commencé à programmer à partir de zéro, mais au contraire, c'est certain pour ceux qui maîtrisent d'autres langages. Je pense qu'il est possible d'apprendre à un faible coût d'apprentissage. Désormais, je souhaite approfondir ma compréhension en créant mes propres produits, y compris des projets de développement d'équipe.
[Python] Personnalisation du site de gestion Django (surface d'affichage) [Mémo inversé de l'écran de gestion Django] https://qiita.com/zenwerk/items/044c149d93db097cdaf8) Document Django
Recommended Posts