2 回答

TA貢獻1725條經驗 獲得超8個贊
可以過濾在DetailView為好,通過重寫get_queryset方法[Django的DOC] :
from django.contrib.auth.mixins import LoginRequiredMixin
class ToDoListItemDetail(LoginRequiredMixin, DetailView):
model = ToDoListItem
def get_queryset(self, *args, **kwargs):
return super(ToDoListItemDetail, self).get_queryset(
*args, **kwargs
).filter(user=self.request.user)
Django 總是會在幕后調用get_queryset(..). 默認情況下,此函數返回model您指定的所有對象的查詢集。但是你可以進一步過濾它。
Django 的get_object方法 [Django-doc]然后將使用idand/or進一步過濾它slug,但是如果您已經過濾掉了不屬于 的元素self.request.user,那么這只會導致查詢不返回任何結果。
在這里將LoginRequiredMixin[Django-doc]添加到您的類中也是有意義的,因為如果用戶沒有登錄,您可能希望將下擺/她重定向到登錄屏幕。
添加回答
舉報