2 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
可以過(guò)濾在DetailView為好,通過(guò)重寫(xiě)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 總是會(huì)在幕后調(diào)用get_queryset(..). 默認(rèn)情況下,此函數(shù)返回model您指定的所有對(duì)象的查詢(xún)集。但是你可以進(jìn)一步過(guò)濾它。
Django 的get_object方法 [Django-doc]然后將使用idand/or進(jìn)一步過(guò)濾它slug,但是如果您已經(jīng)過(guò)濾掉了不屬于 的元素self.request.user,那么這只會(huì)導(dǎo)致查詢(xún)不返回任何結(jié)果。
在這里將LoginRequiredMixin[Django-doc]添加到您的類(lèi)中也是有意義的,因?yàn)槿绻脩?hù)沒(méi)有登錄,您可能希望將下擺/她重定向到登錄屏幕。
添加回答
舉報(bào)