[PYTHON] Réglage du site d'administration de Django

La bonne chose à propos de Django est que la page d'administration est puissante, mais si vous l'utilisez correctement, ORM émettra divers SQL, alors faites attention. Je commence juste à l'utiliser, donc je l'ajouterai au besoin.

Remplacer l'ensemble de requêtes pour optimiser le SQL de la page de liste

Select_related est activé si list_display contient un champ ForeignKey. Cependant, select_related ne suit pas la relation du champ FK avec null = True, de sorte que la cible est extraite par SQL individuel pour le nombre d'enregistrements. Par conséquent, lorsque la page de liste est ouverte, l'instruction SELECT est émise environ 400 fois. De plus, select_related trace indéfiniment le champ FK avec null = False, donc il se peut que ce soit SQL qui se joint à 10 ou 20 tables.

Pour bien le faire, définissez vous-même queryset. Avec cela, vous pouvez créer JOIN autant que nécessaire.

admin.py


class UserRelationshipAdmin(admin.ModelAdmin):
    list_display = ('id', 'from_user', 'to_user', 'is_block', 'is_friend', 'created_at')
    
    def queryset(self, request):
        return super(UserRelationshipAdmin,
                 self).queryset(request).select_related('from_user', 'to_user')

Spécifiez raw_id_fields pour les éléments avec un grand nombre de cas

Les champs ForeignKey et choix sont affichés par défaut (élément de sélection) sur la page de détail. Ce sera génial si des dizaines de milliers de tables sont référencées, donc si vous spécifiez raw_id_fields, il affichera une zone de texte + étiquette.

admin.py


class UserProfileAdmin(admin.ModelAdmin):
    raw_id_fields = ('user',)

Il y a une description ici dans le document officiel https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

Recommended Posts

Réglage du site d'administration de Django
[Django] Vous souhaitez personnaliser la page d'administration?
Initialiser l'application Django
Créez votre propre middleware Django
Installez Django sur Mac
Personnalisation de list_filter de l'écran d'administration de Django
Lorsque vous oubliez le nom d'utilisateur et le mot de passe de l'écran de gestion dans Django
Mémo inversé de l'écran de gestion Django
Analysez votre site à l'aide de Google Analytics-1 Chapter
Enregistrer l'application Django dans le projet
Déployer l'application Django sur Heroku
Django Tips-Créez un site de classement avec Django-
[Django] Créez votre propre page d'erreur 403, 404, 500
Personnalisation de l'écran d'administration de Django Première étape