2017-05-24 15 views
1

私はシンプルなモデルを持っています。また、20人未満のユーザーがおり、モデル管理者はリクエストを記録する目的でサービスを提供しています。Django admin:それぞれのユーザーのレコードを表示

問題は、すべてのユーザーがモデル管理サイトのすべてのレコードを見ることができるということです。

この動作を変更して、同じユーザーのみが作成したレコードを表示することはできますか?

ありがとうございます。

+0

これは管理サイトのポイントであり、スーパーユーザーは何でも見ることができます。各ユーザーに特定のアイテムのみが表示されるようにするには、別のテンプレートを作成することをお勧めします。これはあなたのユースケースに当てはまるでしょうか? –

+0

ありがとう、あなたが言うことを意味する - クエリーセットでビューを作成し、ユーザー別にフィルタリングしてからテンプレートをレンダリングするのですか?私はそれをすることができました、私は初心者から2〜3日かかるかもしれません。私は管理サイトがこの機能を持つことができると思った。 – user1619524

+0

一般的なListViewクラスベースのビューを使用して、提供されている 'get_queryset()'メソッドをオーバーライドすることができます(https://docs.djangoproject.com/en/1.11/ref/class-based-views/generic-display/#listview )。テンプレートでは、コンテキストデータを繰り返し、必要に応じてテンプレートに提示します。 –

答えて

5

Djangoのドキュメントは、あなたが望むほぼ正確に何を行い例があります。

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

アイデアは、モデル管理ビューでget_queryset()メソッドをオーバーライドすることです:

# admin.py 
from django.contrib import admin 

class YourModelAdmin(admin.ModelAdmin): 
    def get_queryset(self, request): 
     qs = super(MyModelAdmin, self).get_queryset(request) 
     return qs.filter(author=request.user) 

admin.site.register(YourModel, YourModelAdmin) 

あなたがすることができますクエリーセットフィルタを意欲的なニーズにさらに適合させます。

関連する問題