【问题标题】:making a variable name variable?制作变量名变量?
【发布时间】:2014-07-03 03:48:03
【问题描述】:

在 django 中,我想调用一个查询集,但该查询集的名称会因传递给它的变量而异。

在本例中,我有一个名为 var 的变量,它将返回值“fileone”、“filetwo”或“filethree”

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

即。

var = filetwo

queryset = filetwo.objects.all()

var = fileone

queryset = fileone.objects.all()

【问题讨论】:

标签: python django


【解决方案1】:

方法(1),如果你可以将Class分配给变量在Python中你可以直接将Class分配给变量。如果您的变量包含该类,您可以直接调用它。我就是这样做的——

模型-

class ErrorLog(models.Model):

    class Meta:
        app_label = 'core'

url 配置,在变量中传递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 的名称 'Class 而不是直接的类,那么你可能想要得到调用查询集之前的模型 -

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

from django.db.models import get_model
model = get_model("string name of model class")
return model.objects.all()

【讨论】:

  • 谢谢,这正是我想要的!我刚刚开始将我的视图构建为基于类的视图,以使用 django-rest-framework 的 mixin,所以现在这一切都说得通了 :)
猜你喜欢
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2017-12-15
相关资源
最近更新 更多