2015-11-07 93 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