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 在类声明中不存在,只有当类的实例已创建。
