Je vais continuer à jouer avec la page d'administration.
La dernière fois est allé au point d'enregistrement de Poll, mais cette fois, nous enregistrerons également Choice (Review: Poll and Choice in models.py) L'un est défini).
Vous pouvez l'utiliser comme admin.site.register (Choice), mais cela séparera les écrans d'enregistrement Sondage et Choix. La relation entre les deux est qu'il y a plusieurs choix dans le sondage, donc je veux créer un écran qui se conforme à cela.
admin.py ######
class ChoiceInline(admin.StackedInline): #StackedInline est-il un format en ligne?
model = Choice
extra = 3 #Que signifie mettre dans combien de modèles?
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline] #Inline est-il une zone supplémentaire?
admin.site.register(Poll, PollAdmin)
#"?" Est ajouté à la fin du commentaire car je ne suis pas sûr de ma compréhension.
Le choix peut également être enregistré sur l'écran d'édition du sondage. Si vous voulez le rendre plus compact, vous pouvez définir la classe parente de ChoiceInline sur TabularInline et chaque Choice tiendra sur une ligne.
Je vais jouer avec un peu plus.
Par défaut, seules les données enregistrées sont affichées sous forme de chaîne de caractères sur l'écran d'affichage de la liste, mais d'autres éléments peuvent être ajoutés ici.
Pour ce faire, ajoutez la ligne suivante à la classe PollAdmin.
admin.py ######
class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date') # list_Spécifier l'affichage avec l'affichage
#J'ai fait une erreur d'écriture et j'ai confirmé l'opération même sous forme de liste. Est-ce naturel
Et si tu écris comme ça
list_display = ('question', 'pub_date’,’was_published_recently’)
# was_published_récemment est une fonction définie dans Sondage (notez que récemment était aujourd'hui dans le document précédent)
Il semble qu'il soit également possible d'afficher la valeur de retour de la fonction. À propos, le trait de soulignement est remplacé par un espace.
Comme étape préliminaire, j'ajouterai un petit modèle de sondage.
models.py ######
from django.utils import timezone
class Poll(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1) #Est-ce dans un délai d'un jour après sa publication?
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
Et vous pouvez ajouter des options en ajoutant ce qui suit à la classe PollAdmin.
admin.py ######
list_filter = ['pub_date'] # pub_Fonction pour affiner en fonction de la date
search_fields = ['question'] #Capacité de recherche basée sur la question
date_hierarchy = 'pub_date' #Filtre fonction de date similaire
Il semble que vous puissiez le personnaliser plus en détail en utilisant un modèle, mais je n'y toucherai pas cette fois car cela sera fait en détail dans le prochain tutoriel. Et
Didacticiel entré 3. J'ai hâte.