1
私はシンプルなモデルを持っています。また、20人未満のユーザーがおり、モデル管理者はリクエストを記録する目的でサービスを提供しています。Django admin:それぞれのユーザーのレコードを表示
問題は、すべてのユーザーがモデル管理サイトのすべてのレコードを見ることができるということです。
この動作を変更して、同じユーザーのみが作成したレコードを表示することはできますか?
ありがとうございます。
私はシンプルなモデルを持っています。また、20人未満のユーザーがおり、モデル管理者はリクエストを記録する目的でサービスを提供しています。Django admin:それぞれのユーザーのレコードを表示
問題は、すべてのユーザーがモデル管理サイトのすべてのレコードを見ることができるということです。
この動作を変更して、同じユーザーのみが作成したレコードを表示することはできますか?
ありがとうございます。
Djangoのドキュメントは、あなたが望むほぼ正確に何を行い例があります。
アイデアは、モデル管理ビューで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)
あなたがすることができますクエリーセットフィルタを意欲的なニーズにさらに適合させます。
これは管理サイトのポイントであり、スーパーユーザーは何でも見ることができます。各ユーザーに特定のアイテムのみが表示されるようにするには、別のテンプレートを作成することをお勧めします。これはあなたのユースケースに当てはまるでしょうか? –
ありがとう、あなたが言うことを意味する - クエリーセットでビューを作成し、ユーザー別にフィルタリングしてからテンプレートをレンダリングするのですか?私はそれをすることができました、私は初心者から2〜3日かかるかもしれません。私は管理サイトがこの機能を持つことができると思った。 – user1619524
一般的なListViewクラスベースのビューを使用して、提供されている 'get_queryset()'メソッドをオーバーライドすることができます(https://docs.djangoproject.com/en/1.11/ref/class-based-views/generic-display/#listview )。テンプレートでは、コンテキストデータを繰り返し、必要に応じてテンプレートに提示します。 –