我有这段代码
class DistrictResource(ModelResource):
model=models.District
res_name="district"
class Meta:
queryset = self.model.District.objects.active()
我如何在meta中使用self.model
,因为如果我使用self
答案 0 :(得分:3)
您需要使用
queryset = models.District.objects.active()
而不是
queryset = self.model.District.objects.active()
在这种情况下。
编辑:
由于scope resolution in Python的规则,您无法访问内部类中的res_name
:
块是一段Python程序文本,作为一个单元执行。以下是块:模块,函数体和类定义。
范围定义块中名称的可见性。
类块中定义的名称范围仅限于类块;它没有扩展到方法的代码块 - 这包括生成器表达式,因为它们是使用函数作用域实现的。
记住Python Scope解析的一个简单规则是LEGB规则:
升。本地,即在函数中指定的名称。
电子。封闭功能本地人。
-G。全局
B中。内置插件。
class Meta
被用作配置选项。我不确定您为什么要在Meta
内访问Meta
之外的变量,而不是在Meta
内定义它。