ホームページ >バックエンド開発 >Python チュートリアル >Django 管理パネルで管理者の編集を無効にする方法

Django 管理パネルで管理者の編集を無効にする方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-27 06:12:08938ブラウズ

django管理パネル:データ管理のための読み取り専用アプローチ

Django管理パネルは、モデル、データ、およびユーザーを管理するためのユーザーフレンドリーなインターフェイスを提供します。 組み込みの検索およびフィルタリング機能は非常に便利です。ただし、特定のモデルまたはフィールドへの編集アクセスを制限することが重要な場合があります。 これは、データの整合性を維持し、偶発的な変更を防ぐ必要がある場合、またはパネルがデータ表示のみである場合に特に当てはまります。

実用的な例

最近、クライアントは、外部Webサイトから削られたデータを表示、フィルタリング、およびページングするためのソリューションを必要としました。特に、新しいプロパティリスティングを追跡しました。 Djangoはエレガントなソリューションを提供し、カスタムページ作成を必要とせずにデータ管理を可能にしました。 以下は、実装を示すスクリーンショットです:

管理パネルの概要:

このビューには、インポート/エクスポートオプションのみが表示されます。 管理パネル内で直接データを追加または編集することは不可能です。

個々のエントリページ:How to disable admin editing in Django Admin Panel

同様に、個々のプロパティページは読み取り専用モードで表示されますが、編集機能はありません。

この読み取り専用機能がDjangoでどのように実装されたかを調べてみましょう。 Django管理者の編集を無効にする

How to disable admin editing in Django Admin Panel 1。モデル定義

スクレイプ化されたプロパティデータの保存に使用されるコアモデル:

2。管理者パネルのカスタマイズ(

編集を無効にするには、

および

ファイル内のメソッドをオーバーライドします:

<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>

ベースクラス(admin.py)は、拡張データプレゼンテーションのために

を管理するために使用されます。

結果has_add_permission has_change_permissionこのアプローチは達成されます: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>

「追加」ボタンの削除:ReadOnlyAdmin新しいエントリを追加するオプションは、管理インターフェイスから完全に削除されます。 list_display

読み取り専用エントリページ:

既存のエントリをクリックすると、ボタンを保存しない読み取り専用ビューで開きます。

このセットアップは、データ表示が最重要であり、エントリの編集または追加が不要または潜在的に問題があるシナリオに最適です。読み取り専用の管理者パネルの利点

  • データの整合性:外部からソースのデータの偶発的な変更を防ぎます(たとえば、スクレイピングまたはAPIを介して)。
  • 参照データの読み取り専用ビュー:
  • 分析ダッシュボード、プロパティリスト、ログなどのアプリケーションでデータの表示とフィルタリングに最適です。 結論
  • Django管理者の編集を無効にすることは、データの保護と安全な読み取り専用アクセスを提供するのに非常に有益であり、非常に有益です。 これらの手順に従うことにより、安全で読み取り専用の管理者パネルをすばやく作成できます。

接続を維持 - @syedamahamfahim?

​​

以上がDjango 管理パネルで管理者の編集を無効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。