2009-03-04 9 views
10

第三者コードからモデルクラスを継承したいと考えています。私はいくつかのフィールドを使用することはしませんが、私のクライアントが管理者のモデルを編集できるようにしたいと思います。 Adminからそれらを隠すのが最善の賭けですか?それとも最初に作成されるのを実際に防ぐことができますか?Djangoモデルの継承。フィールドの非表示または削除

さらに、不要なフィールドの1つが必要な場合はどうすればよいですか?私の最初の考えは、saveメソッドをオーバーライドしてデフォルト値を入れることです。

答えて

4

モデルを継承している場合は、既存のフィールドを非表示または無効にすることをお勧めしません。あなたがおそらくできる最も良いことは、あなたが提案したものです:オーバーライドsave()をオーバーライドし、そこであなたのロジックを処理してください。

4

継承するのではなく、カスタマイズしたフォームを使用することを検討してください。

  1. モデル内にあるディスプレイからフィールドを削除することができます。

  2. フォームのclean()メソッドで、デフォルト値を検証して提供することができます。

はあなたが管理者で編集可能なフィールドを制御することができますhttp://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

5

を参照してください。 Djangoのドキュメントから

「あなたが唯一の名前とタイトルのフィールドが含まれAuthorモデルのフォームをしたい場合は、フィールドを指定するか、次のように除外さ:

class AuthorAdmin(admin.ModelAdmin): 
    fields = ('name', 'title') 

class AuthorAdmin(admin.ModelAdmin): 
    exclude = ('birth_date',)" 

http://docs.djangoproject.com/en/dev/ref/contrib/admin/

関連する問題