我只是在查看官方文档中的动态过滤: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。一开始?到目前为止,我了解到您不添加 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)
最佳答案
在这里使用 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
类里面的任何地方。
关于 Django :为什么是self。用在这里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548967/