class customerDetailView(DetailView):
queryset = Customer.objects.get(name=self.name) # This line give error NameError: name 'self' is not defined
context_object_name = 'customerDetail'
template_name = "customer.html"
allow_empty = True
def __init__(self, name=None, *args):
self.name = name
报错 NameError: name 'self' is not defined
最佳答案
由于您想要自定义 DetailView
的查询集,正确的方法是覆盖 get_queryset()
函数。查看documentation for DetailView它显示了方法解析顺序。特别是,get_queryset()
被称为。
所以你的代码会变成这样:
class customerDetailView(DetailView):
context_object_name = 'customerDetail'
template_name = "customer.html"
allow_empty = True
def __init__(self, name=None, *args):
self.name = name
def get_queryset(self):
return Customer.objects.get(name=self.name)
你不能像现在这样使用 self
因为 self
在类声明中不存在,只有当类的实例已创建。
关于python - 名称 'self' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787163/