2 回答

TA贡献1725条经验 获得超7个赞
可以过滤在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]添加到您的类中也是有意义的,因为如果用户没有登录,您可能希望将下摆/她重定向到登录屏幕。
添加回答
举报