例如 - 我的查询在不同实例的不同表中发生变化。我有一个字符串输入,它告诉我在特定实例中我必须访问哪个表,我该如何在这种不同的表中查询django?如何在django中访问table_name变量?
通常我们查询models.Person.objects.filter(),其中table_name = Person(在每个查询中保持相同)。我们如何查询table_name是一个变量?
例如 - 我的查询在不同实例的不同表中发生变化。我有一个字符串输入,它告诉我在特定实例中我必须访问哪个表,我该如何在这种不同的表中查询django?如何在django中访问table_name变量?
通常我们查询models.Person.objects.filter(),其中table_name = Person(在每个查询中保持相同)。我们如何查询table_name是一个变量?
您可以使用Django apps.get_model方法
>>> from django.apps import apps
>>> model_you_want = apps.get_model(app_label='app_name', model_name='model_name_string')
>>> model_you_want.objects.filter()
与eval
您可以运行一个Python声明这是字符串的形式获得通过它的名字模型。
我测试过的巨蟒-3和Django的1.8.x的以下 EXEC关键字也适用于蟒2
table_name = 'Person'
query = "{0}.objects.all()".format(table_name)
result = eval(query)
谢谢Serjik。 –
@MadhuryaGandi不客气 – Serjik
为什么要使用eval,如果django内置了用于回顾的工具? – Nick