例如 - 我的查詢在不同實例的不同表中發生變化。我有一個字符串輸入,它告訴我在特定實例中我必須訪問哪個表,我該如何在這種不同的表中查詢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