2011-08-16 6 views
7

つまり、すべてのアプリケーションで、入力したデータ以外の編集や表示をユーザーに許可しないようにしたいと考えています。Django admin - 自分の入力データのみにユーザーのアクセスを制限することはできますか?

私はhereを読んでいます。これは、管理アプリケーションに組み込まれていない可能性があります。もしそうなら、延長がありますか?

おかげ

答えて

5

は、管理者の拡張についていくつかの基本的な情報については、このブログ記事を参照してください:http://www.b-list.org/weblog/2008/dec/24/admin/

+0

をこのブログの記事は、私の質問のすべてに答え、ありがとうございました! –

+0

よろしくお願いいたします。ジェームズの記事は非常に貴重です。 – Brandon

+0

私は今、彼のブログの正式な信者です:) –

2

それは行うことができます。 まずadmin.pyに適切なmodelAdminを作成する必要があります。あなたは適切なメソッドをオーバーライド制限したいフィールドのタイプに応じて、フィールドのフィルタリングについて

class MyModelAdmin(admin.ModelAdmin): 

    def queryset(self, request): 
     return Entry.objects.filter(owner=request.user) 

はリストについては、「表示」フィルタリングがqueryset方法を変更します。

関連Djangoのドキュメントはここにある: https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

のForeignKeyフィールド出力を制限するには、あなたがこのような何か行うことができます。 (Djangoのドキュメントから)

class MyModelAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == "car": # The name of the field you want to limit 
      kwargs["queryset"] = Car.objects.filter(owner=request.user) 
     return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 
関連する問題