在上一篇中,获取到了url中传入的DI为x的poke的第y个card,这里,我们需要返回登陆用户的第x个poke以及该poke下所有的card
在get_object中,获取的object是使用某个queryset,我们传入一个queryset或者使用get_queryset方法返回的queryset,的filter方法来获取特定的object的,我们首先限制queryset
在get_queryset方法中,有:
def get_queryset(self): return Poke.objects.filter(pokeuser=self.request.user).order_by('-score')
这里,我们就先获取了登陆状态下的用户的所有poke记录,在get_object方法中,我们有
def get_object(self,queryset=None): num=int(self.kwargs.get(self.pk_url_kwarg,None)) query=self.get_queryset() try: obj=query[num-1] except IndexErrort: raise Http404 return obj
这里,我们就返回了某个poke记录
这样~最后,我们在get_context_data方法里面获取对应的poke的所有的card记录
def get_context_data(self,**kwargs): context=super(PokeInfo,self).get_context_data(**kwargs) context['cards']=self.object.cards.all() return context
注意的是,context=super(PokeInfo,self).get_context_data(**kwargs)这个就是调用父类的get_context_data方法,它会将我们get_object方法返回的obj存储到context中,并且,对应的名字就是我们在类中设置的属性,比如
context_object_name='information'
则有
context[‘information’]=obj(obj是我们在get_object方法中返回的)