2012-03-29 75 views

回答

2

使用_state.db,如:

my_obj = MyModel.objects.get(pk=1) 
my_obj._state.db 

這示出在該routing example

+0

這正是我需要的,謝謝。我已經閱讀了*多個數據庫*文檔,但我錯過了這一行。 – 2012-04-01 18:34:34

0

我相信你正在尋找項目(頂級)Django目錄中的settings.py。如果不是,你會發布更多信息嗎?

這是Django項目目錄/ home/amr/django/amr中的一個settings.py文件。

import os 
DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

ADMINS = (
    # ('Somone R. Somebody'[email protected]'), 
) 

MANAGERS = ADMINS 

DATABASES = { 
    'default': { 
     #'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
     'ENGINE': 'mysql', 
     'NAME': 'some-server-name',      # Or path to database file if using sqlite3. 
     'USER': '<user>',      # Not used with sqlite3. 
     'PASSWORD': 'xxxxxxxx',     # Not used with sqlite3. 
     'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '',      # Set to empty string for default. Not used with sqlite3. 
    } 
} 

SESSION_COOKIE_AGE = 15 * 60 * 60  # Age of cookie, in seconds 
0

沒有辦法從模型實例本身直接獲取信息。啊,_state,是的。它應該像使用內置方法一樣明確地傳入'using'參數。或者可以通過查看模型實例的一些事實來推導DB使用的設計路由器,這裏是獵人。

0

如果您始終將模型保存在同一個數據庫中,則可以將該信息存儲在模型類中,然後在需要時使用它。可能不是pythonic,但它可能會伎倆。

Class Hunter(models.Model): 
    # ... other stuff 
    db = 'hunter_db' 

訪問它,然後用__class__

def add_ducks_to_hunt(hunter): 
    db = hunter.__class__.db 
    duck = Duck() 
    duck.save(using=db) 

在另一方面,如果你救了一個類的對象在不同的​​數據庫,比我看到的比寫的每個對象的id和db沒有其他辦法將對象的save()名稱添加到某個表中,您可以隨時訪問它並使用該信息加載對象。

相關問題