2012-05-01 76 views
0

我需要爲特定應用的所有模型檢索表名和模型的contenttype id。我可以用這個代碼來獲得一個模型的表名,但它的contentType ID:直接從數據庫獲取Django模型的表名稱

from django.db.models import get_app, get_models 
app = get_app("my_app_name") 
for model in get_models(app, include_auto_created=True): 
    print model._meta.db_table 

不過,我需要直接從數據庫中獲得此​​信息。例如:

Select id, model from django_content_type where app_label='my_app_name' 

在這種情況下,我得到的是id,但沒有表名。第二種情況下,哪裏可以得到表名?

+0

「我需要從數據庫中直接得到這些信息」 ...爲什麼? –

+0

@ IgnacioVazquez-Abrams我使用硬編碼的設備直接在數據庫中填充大量數據,繞過了所有的django。我需要這個信息,我所有的地方都是原始數據庫.. – jerrymouse

+0

恐怕如果db_table被指定爲非默認值,那麼模型的表名稱將存儲在代碼中,而不是'django_content_type'中。 – okm

回答

1

爲了得到一個模型的contentType的PK

from django.contrib.contenttypes.models import ContentType 
ContentType.objects.get_for_model(model).pk 

run standalone Django script,裁判posts或者乾脆(通常工作)

DJANGO_SETTINGS_MODULE='project.settings' python script.py 
+0

+1,謝謝,並且okm。我在腳本中附加了這個:'sys.path.append('../../ projects') sys.path.append('../../ apps') sys.path.append('。 ./../external_apps/') os.environ ['DJANGO_SETTINGS_MODULE'] ='core.settings'' – jerrymouse

相關問題