1
我有一個簡單的模型,比如Resources。我有不到20個用戶,模型管理員用於記錄請求。Django admin:只顯示各個用戶的記錄
問題是,所有用戶都可以看到模型管理站點中的所有記錄。
此行爲是否可以更改爲僅顯示由同一用戶創建的記錄?
謝謝您的期待。
我有一個簡單的模型,比如Resources。我有不到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)
你可以使查詢集過濾器適應更加具體的需求。
這就是管理網站的要點,超級用戶可以看到任何東西。如果你想讓每個用戶只看到特定的項目,那麼我建議你爲此創建一個單獨的模板。這可以適用於你的用例嗎? –
謝謝,你的意思是說 - 用queryset創建視圖來篩選用戶,然後渲染模板?我能做到這一點,可能需要2-3天,因爲我是初學者。我想如果管理網站可以有這個功能。 – user1619524
您可以使用通用的ListView基於類的視圖並重寫提供的「get_queryset()」方法(https://docs.djangoproject.com/en/1.11/ref/class-based-views/generic-display/#listview )。然後在模板中,根據需要迭代上下文數據並將其呈現在模板中。 –