2016-09-20 13 views
0

現在のユーザーに関連するオブジェクトのみを表示しようとしています。ユーザーはファイルをアップロードすることができ、管理者は自分のファイルのみを見ることができます。ここに私のモデルである:現在のユーザーに関連するオブジェクトを表示するdjango admin

class Share(models.Model): 
    owner = models.ForeignKey(User, default='') 
    title = models.CharField("File's title", max_length=100, unique=True, default='File') 
    zip_file = models.FileField('Shared File', upload_to=content_zip_name, validators= [validation_zip]) 

と私のadmin.py

from django.contrib import admin 
from share.models import Share 

class ShareAdmin(admin.ModelAdmin): 
    list_display = ('title',) 
    save_as = True 

    def queryset(self, request): 
     qs = super(ShareAdmin, self).queryset(request) 
     if request.user.is_superuser: 
      return qs 
     return qs.filter(owner=request.user) 

admin.site.register(Share, ShareAdmin) 

私はクエリセット関数をオーバーライドしてみましたが、work..anyアイデアをしませんの?

答えて

1

あなたがget_queryset方法で(list_filterで使用)querysetメソッドを混同してきました:ModelAdmin戻っ管理者が編集することができ、すべての モデルインスタンスのクエリセット

get_queryset方法サイト。このメソッドをオーバーライドする のユースケースの1つは、ユーザーがログインしたが所有するオブジェクトを表示することです。

[強調鉱山]

class ShareAdmin(admin.ModelAdmin): 
    list_display = ('title',) 
    save_as = True 

    def get_queryset(self, request): 
     qs = super(ShareAdmin, self).get_queryset(request) 
     if request.user.is_superuser: 
      return qs 
     return qs.filter(owner=request.user) 
+0

それが正常に動作します!どうもありがとう!しかし、ユーザーがオブジェクトを作成すると、ユーザーを選択できます(FKのため)。現在のユーザーのみを表示するにはどうすればよいですか? – Silvering

関連する問題