2017-05-24 38 views
1

我有一個簡單的模型,比如Resources。我有不到20個用戶,模型管理員用於記錄請求。Django admin:只顯示各個用戶的記錄

問題是,所有用戶都可以看到模型管理站點中的所有記錄。

此行爲是否可以更改爲僅顯示由同一用戶創建的記錄?

謝謝您的期待。

+0

這就是管理網站的要點,超級用戶可以看到任何東西。如果你想讓每個用戶只看到特定的項目,那麼我建議你爲此創建一個單獨的模板。這可以適用於你的用例嗎? –

+0

謝謝,你的意思是說 - 用queryset創建視圖來篩選用戶,然後渲染模板?我能做到這一點,可能需要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) 

你可以使查詢集過濾器適應更加具體的需求。