Джанго: Почему это я.используется здесь? - PullRequest
0 голосов
/ 27 мая 2018

Я просто изучал динамическую фильтрацию в официальной документации: 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 былоиспользовал себя.в начале?Я узнал это так далеко, что вы не добавляете себя.при определении переменной.

В частности, сейчас я не уверен, стоит ли мне использовать здесь этот код:

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 голосов
/ 27 мая 2018

Используя здесь 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

В любом месте класса.

...