我想从外部数据库读取数据并在Django中生成报告。我正在尝试为我将要获取的数据创建所需的模型。这样做是否可以定义关系?
例如:
我有2个表,ITEMS和STAKEHOLDERS,每个ITEM都有许多利益相关者。是否可以定义模型,当我这样做时,ITEM.objects.get(pk = 1).STAKEHOLDERS
,我得到该特定项目的所有利益相关者?
一些额外的细节:我将使用自定义sql来获取ITEM和利益相关者的数据。
答案 0 :(得分:1)
您需要database router将这些模型的查询定向到所需的数据库。
class Item(Model):
_database = 'legacy'
# fields...
class Stakeholder(Model):
_database = 'legacy'
item = ForeignKeyField(Item, related_name='stakeholders')
# fields...
# ...
Item.objects.get(pk=1).stakeholders
# ...
class DbRouter(object):
def db_for_read(self, model, **hints):
database = getattr(model, '_database', None)
if database:
return database
else:
return 'default'
# Implement other methods if needed (e.g. db_for_write)
# settings.py
DATABASE_ROUTERS = ['myapp.mymodule.DbRouter']