Maison >développement back-end >Tutoriel Python >Comment désactiver l'édition administrateur dans le panneau d'administration Django

Comment désactiver l'édition administrateur dans le panneau d'administration Django

Barbara Streisand
Barbara Streisandoriginal
2025-01-27 06:12:081019parcourir

Panneau d'administration Django: une approche en lecture seule pour la gestion des données

Le panneau d'administration Django propose une interface conviviale pour gérer les modèles, les données et les utilisateurs. Ses capacités de recherche et de filtrage intégrées sont incroyablement pratiques. Cependant, il est parfois crucial de restreindre l'accès à l'édition à des modèles ou des champs spécifiques. Cela est particulièrement vrai lorsque l'intégrité des données doit être maintenue, empêchant des modifications accidentelles ou lorsque le panneau est uniquement pour la visualisation des données.

un exemple pratique

Récemment, un client a besoin d'une solution pour afficher, filtrer et paginer des données grattées à partir d'un site Web externe - en particulier, le suivi de nouvelles listes de propriétés. Django a fourni une solution élégante, permettant la gestion des données sans avoir besoin d'une création de page personnalisée.

Voici des captures d'écran illustrant l'implémentation:

Présentation du panneau d'administration:

How to disable admin editing in Django Admin Panel

Cette vue affiche uniquement les options d'importation / exportation; L'ajout ou l'édition de données directement dans le panneau d'administration est impossible.

Page d'entrée individuelle:

How to disable admin editing in Django Admin Panel

De même, les pages de propriétés individuelles sont affichées en mode en lecture seule, manquant de fonctionnalité d'édition.

Explorons comment cette fonctionnalité en lecture seule a été mise en œuvre dans Django.

Édition de désactivation dans django admin

1. Définition du modèle

Le modèle de base utilisé pour stocker les données de propriété grattées:

<code class="language-python">from django.db import models

class Property(models.Model):
    name = models.CharField(max_length=255)
    price = models.IntegerField()
    location = models.CharField(max_length=255)
    date_listed = models.DateField()

    def __str__(self):
        return self.name</code>

2. Personnalisation du panneau d'administration (admin.py)

pour désactiver l'édition, remplacez les méthodes has_add_permission et has_change_permission dans votre fichier admin.py:

<code class="language-python">from django.contrib import admin
from .models import Property

class ReadOnlyAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'location', 'date_listed')

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return False

admin.site.register(Property, ReadOnlyAdmin)</code>

Une classe de base (ReadOnlyAdmin) est utilisée ici pour gérer list_display pour une présentation améliorée des données.

le résultat

Cette approche réalise:

  1. La suppression du bouton "Ajouter": L'option pour ajouter de nouvelles entrées est complètement supprimée de l'interface d'administration.
  2. Pages d'entrée en lecture seule: Cliquez sur une entrée existante l'ouvre dans une vue en lecture seule, dépourvue de boutons de sauvegarde.

Cette configuration est idéale pour les scénarios où l'affichage des données est primordial, et l'édition ou l'ajout d'entrées est inutile ou potentiellement problématique.

Avantages d'un panneau d'administration en lecture seule

  • Intégrité des données : Empêche les modifications accidentelles des données provenant de sources externes (par exemple, via le scraping ou les API).
  • Vues en lecture seule pour les données de référence : Parfait pour afficher et filtrer les données dans des applications telles que des tableaux de bord d'analyse, des listes de propriétés ou des journaux.

Conclusion

La désactivation de l'édition dans l'administrateur Django est simple et très bénéfique pour sauvegarder les données et fournir un accès sécurisé en lecture seule. En suivant ces étapes, vous pouvez créer rapidement un panneau d'administration sécurisé en lecture seule.

Restez connecté - @syedamahamfahim ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn