在django中我想调用一个查询集,但该查询集的名称会根据传递给它的变量而有所不同。
在这个例子中,我有一个名为var的变量,它将返回" fileone"," filetwo"的值。或" filethree"
然后如何使用它来创建要调用的适当查询集?
即
var = filetwo
queryset = filetwo.objects.all()
var = fileone
queryset = fileone.objects.all()
答案 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