Skip to main content
 首页 » 编程设计

python之名称 'self' 未定义

2025年05月04日18me-sa

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