首页 > 解决方案 > 姜戈:为什么是自我。用在这里?

问题描述

我只是在官方文档中查看动态过滤:https ://docs.djangoproject.com/en/2.0/topics/class-based-views/generic-display/#dynamic-filtering

那里说

def get_queryset(self):
    self.publisher = get_object_or_404(Publisher, name=self.kwargs['publisher'])
    return Book.objects.filter(publisher=self.publisher)

有谁知道,为什么 self.publisher = get_object_or_404 使用了 self.publisher = get_object_or_404。一开始?到目前为止,我了解到您不添加自我。定义变量时。

具体来说,我现在不确定是否应该在这里使用该代码:

def get_queryset(self):
    slug = self.kwargs.get('slug')
    return Event.objects.filter(organiser__slug=slug)

或者那个:

def get_queryset(self):
    self.slug = self.kwargs.get('slug')
    return Event.objects.filter(organiser__slug=self.slug)

标签: djangoself

解决方案


通过在此处使用 self :

def get_queryset(self):
    self.publisher = get_object_or_404(Publisher, name=self.kwargs['publisher'])
    return Book.objects.filter(publisher=self.publisher)

我们声明了一个类级变量,该类中的其他方法可以使用该变量。这意味着我们可以通过调用来使用该变量:

self.publisher

课堂上的任何地方。


推荐阅读