2015-11-07 64 views
3

例如 - 我的查询在不同实例的不同表中发生变化。我有一个字符串输入,它告诉我在特定实例中我必须访问哪个表,我该如何在这种不同的表中查询django?如何在django中访问table_name变量?

通常我们查询models.Person.objects.filter(),其中table_name = Person(在每个查询中保持相同)。我们如何查询table_name是一个变量?

回答

1

您可以使用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() 
0

eval您可以运行一个Python声明这是字符串的形式获得通过它的名字模型。

我测试过的巨蟒-3和Django的1.8.x的以下 EXEC关键字也适用于蟒2

table_name = 'Person' 
query = "{0}.objects.all()".format(table_name) 
result = eval(query) 
+0

谢谢Serjik。 –

+0

@MadhuryaGandi不客气 – Serjik

+0

为什么要使用eval,如果django内置了用于回顾的工具? – Nick