如何使用django泛型类detailview获取用户特定对象?

时间:2017-08-13 04:49:26

标签: django generics django-views

如何使用django' s generic class DetailView获取当前与用户相关的对象?使用基于函数的视图,我可以获得如下对象:

def foo(request):  
  friendProfile = get_object_or_404(request.user.profile.friends,username="admin")

使用详细视图的等价物是什么?我猜测它与get_objectget_context_data有关,但我无法完全理解这些文件。

谢谢。

1 个答案:

答案 0 :(得分:3)

request是基于类的视图的属性。要获得当前用户,您应该使用self.request.user

DetailView重载get_queryset以编辑用于获取对象的查询集。

我不确切地知道你的朋友模型是如何定义的,但我们假设它有一个指向你的个人资料的外键,related_name设置为friend_of。您的观点可能是:

class FriendProfileDetail(DetailView):
    model = Friend
    def get_queryset(self):
        return self.model.objects.filter(friend_of=self.request.user.profile)