Django:为什么是自我。在这里使用?

时间:2018-05-27 04:16:46

标签: django self

我刚刚在官方文档中查看动态过滤: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。一开始?到目前为止我学到了它,你不添加自我。在定义变量时。

特别是我现在不确定的是我是否应该在这里使用该代码:

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)

1 个答案:

答案 0 :(得分:3)

在这里使用self:

axes

我们正在声明一个可以被此类中的其他方法使用的类级变量。这意味着我们可以通过调用:

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

班上的任何地方。