2013-01-22 68 views
1

一旦在Django的應用程序的初始化,之前的PostgreSQL數據庫已經建立,如果試圖獲取/所有/創建一個對象,他們通常會看到這樣的錯誤:避免Django的DatabaseError關係「模式」並不存在

>>> Model.objects.all() 
{StackTrace} 
... 
DatabaseError: relation "model" does not exist 
... 

在我的應用我想能夠測試模型是否存在,如果存在運行的代碼,這可能使用Django?

僞代碼:

if not (table_exists(model)) 
    return 
my_models = Model.objects.all() 
... 
+0

在什麼情況下你會是在創建表之前運行的應用程序? –

+0

我想解決的問題實際上是因爲我在'model/__ init__.py'中運行了一個需要模型的例程,創建了一個依賴循環。我沒有意識到,Django運行'installed_apps'中列出的每個模型,該模型正在調用__init__.py代碼。 –

回答

0

你能趕上在試圖訪問模型,真實拋出的異常:

from django.db import DatabaseError 

try: 
    Model.objects.exists() 
except DatabaseError: 
    print 'DB not yet initialized' 
else: 
    print 'DB table exists' 
0

我不知道你爲什麼會想這樣做,但你可以只發出原始SQL,看看錶中存在?

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';