制作变量名变量?

时间:2014-07-03 03:48:03

标签: python django

在django中我想调用一个查询集,但该查询集的名称会根据传递给它的变量而有所不同。

在这个例子中,我有一个名为var的变量,它将返回" fileone"," filetwo"的值。或" filethree"

然后如何使用它来创建要调用的适当查询集?

var = filetwo

queryset = filetwo.objects.all()

var = fileone

queryset = fileone.objects.all()

1 个答案:

答案 0 :(得分:3)

方法(1),如果可以将类分配给变量在Python中,您可以直接将类分配给变量。如果你的变量保存了类,你可以直接调用它。我就是这样做的 -

模特 -

class ErrorLog(models.Model):

    class Meta:
        app_label = 'core'

url config,在变量中传递Model Class -

url(r'^' ..., GenericListView.as_view(..., model=ErrorLog,...), name='manage_error'),

然后最终调用视图中的查询集 -

class GenericListView(...):
    model = ....
    def get_queryset(self):
        //other codes
        return self.model.objects.all()

您会看到query_set将返回其中提到的任何类。

方法(2),如果您只有类名但是,如果您的变量只包含string的{​​{1}}名称而不是该类的名称,那么您可能想在调用queryset之前得到模型 -

获取模型类,您可以执行以下操作 -

'Class