DetailView中的自定义方法有什么问题

时间:2014-09-10 10:27:48

标签: python django class views attributeerror

我正在尝试将URL中的PK与request.user.id进行比较,以便没有人可以查看其他人的个人资料。这可能不是传统的方法,但我仍然想知道我的代码有什么问题。我是一个新学习者,所以请耐心等待。

views.py

class UserDetail(DetailView):
    queryset = Profile.objects.all()
    template_name = 'details.html'

    def get_queryset(self):
        if self.request.user.id != self.kwargs['pk']:
            queryset = Profile.objects.first()
            return queryset
        else:
            return self.queryset

models.py

class Profile(AbstractUser):
    type = models.CharField(max_length=50)

urls.py

url(r'^details/(?P<pk>\d+)/$', login_required(views.UserDetail.as_view())),

当我转到网址时:

错误

Exception Type:     AttributeError
Exception Value:   'Profile' object has no attribute 'filter'

1 个答案:

答案 0 :(得分:1)

配置文件实例不是查询集。

你不应该覆盖get_queryset,你应该覆盖get_object,它会返回你想要显示的特定对象。