0

我有这个代码

class DistrictResource(ModelResource):
    model=models.District
    res_name="district"
    class Meta:
        queryset = self.model.District.objects.active()

如果我使用 self 时出现错误,我如何self.model在 meta 中使用

4

1 回答 1

4

你需要使用

queryset = models.District.objects.active() 

代替

queryset = self.model.District.objects.active()

在这种情况下。

编辑:

由于Python 中的范围解析规则,您无法访问res_name内部类:

块是作为一个单元执行的一段 Python 程序文本。以下是块:模块、函数体和类定义。

范围定义了名称在块中的可见性。

类块中定义的名称范围仅限于类块;它没有扩展到方法的代码块——这包括生成器表达式,因为它们是使用函数范围实现的。

关于 Python Scope 解析的一个简单规则是 LEGB 规则:

L. 局部变量,即在函数内分配的名称。

E. 封闭函数局部变量。

G. 全球

B. 内置插件。


class MetaDjango/Tastypie 在使用元类构造类时将其用作配置选项。我不确定您为什么Meta要从内部访问外部变量Meta,而不仅仅是在内部定义它Meta

于 2012-11-09T03:42:51.903 回答