DJango Memo: depuis le début (plus de modifications sur l'écran de gestion)

Je vais continuer à jouer avec la page d'administration.

Ajouter le choix

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.

Tous les modèles sont maintenant enregistrés sur l'écran d'administration.

Je vais jouer avec un peu plus.

Personnaliser la page de la liste des modifications

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.

Ajouter des options

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

Il semble que le prochain écran sera enfin fait pour la publication

Didacticiel entré 3. J'ai hâte.

Recommended Posts

DJango Memo: depuis le début (plus de modifications sur l'écran de gestion)
Mémo DJango: Depuis le début (en utilisant l'écran de gestion) mon point addictif
DJango Memo: depuis le début (réglage de l'écran d'erreur)
Mémo DJango: Depuis le début (édition de l'écran de gestion) Il y a un mystère
DJango Memo: Depuis le début (préparation)
DJango Memo: depuis le début (réglage du modèle)
DJango Memo: depuis le début (création d'une vue)
Connectez-vous à l'écran de gestion fortigate (6.0) à partir de sélénium-essayez de vous déconnecter
Remarque DJango: depuis le début (traitement de formulaire)
Django memo n ° 1 à partir de zéro
Remarque DJango: depuis le début (en utilisant une vue générique)
Transition vers l'écran de mise à jour avec le Django a tag
Remarque DJango: depuis le début (Simplification et fractionnement d'URLConf)
Comment enregistrer les mêmes données plusieurs fois avec une seule entrée sur l'écran de gestion de Django
Comment effectuer les réglages initiaux à partir de la création de projet Django
Développement d'une application WEB avec Django [Ajouter des données depuis l'écran de gestion]
[Django] Corrige le pluriel du nom du modèle sur l'écran de gestion
L'histoire de l'échec de la mise à jour de "calendar.day_abbr" sur l'écran d'administration de django
Mémo inversé de l'écran de gestion Django
Mémo Tensorflow [mis à jour de temps à autre]
Lancer GQL avec un identifiant numérique depuis l'écran de gestion AppEngine
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Comment créer une application à partir du cloud à l'aide du framework Web Django
[Django] Comment passer des valeurs directement des balises de modèle aux variables JavaScript
Comment enregistrer une seule donnée sur l'écran de gestion de Django
Comment vérifier la version de Django
Notes d'apprentissage depuis le début de Python 1
Omettre la nomenclature depuis le début de la chaîne
Comment faire fonctionner Linux depuis la console
Comment accéder à la banque de données de l'extérieur
Notes d'apprentissage depuis le début de Python 2
Récupérez uniquement le texte du formulaire Django.
Tout refaire pour l'écran de connexion Django
[Django memo] Je souhaite définir à l'avance les informations de l'utilisateur connecté dans le formulaire.
Comment générer automatiquement un document API avec le framework Django REST et POST à partir de l'écran de document