在 Django 中引用另一个数据库的视图
Reference a view from another database in Django
我有一个本地 table,它需要从远程数据库引用 视图。
两种模型都在同一个应用程序中定义。
现在,我想使用 django-import-export 从 excel 导入数据或从表单保存数据。
它一直读取错误的数据库。
我的本地数据库是SQLite,远程数据库是MSSQL。
用于访问视图的模型:
class EmpView(models.Model):
class Meta:
db_table = 'View_Emp'
managed = False
indexes = [
models.Index(fields=['code',]),
]
...
我设置路由器让 Django 在模型是视图时读取远程数据库,否则从默认的读取:
def db_for_read(self, model, **hints):
if model.__name__ == 'EmpView':
return 'emp'
return 'default'
错误:
Traceback (most recent call last):
File "E:\Projects\Envs\.as\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "E:\Projects\Envs\.as\lib\site-packages\django\db\backends\sqlite3\base.py", line 298, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: main.View_Emp
你可以告诉它读取本地数据库,但它应该读取远程数据库。
我哪里错了?
我找到了这个问题,但没有答案:
"no such table" with multiple database on Django 1.11.1
但我正在使用一个视图,它必须是非托管的...
我认为如果您想使用远程数据库,您应该在 settings.py 文件下的数据库设置中定义该数据库设置。
而不是通过使用该数据库名称,您可以访问该数据库 table like
EmpView.objects.using('db_name').filter()
你还应该在模型中定义你的字段。
我有一个本地 table,它需要从远程数据库引用 视图。
两种模型都在同一个应用程序中定义。
现在,我想使用 django-import-export 从 excel 导入数据或从表单保存数据。
它一直读取错误的数据库。
我的本地数据库是SQLite,远程数据库是MSSQL。
用于访问视图的模型:
class EmpView(models.Model):
class Meta:
db_table = 'View_Emp'
managed = False
indexes = [
models.Index(fields=['code',]),
]
...
我设置路由器让 Django 在模型是视图时读取远程数据库,否则从默认的读取:
def db_for_read(self, model, **hints):
if model.__name__ == 'EmpView':
return 'emp'
return 'default'
错误:
Traceback (most recent call last):
File "E:\Projects\Envs\.as\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "E:\Projects\Envs\.as\lib\site-packages\django\db\backends\sqlite3\base.py", line 298, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: main.View_Emp
你可以告诉它读取本地数据库,但它应该读取远程数据库。
我哪里错了?
我找到了这个问题,但没有答案: "no such table" with multiple database on Django 1.11.1
但我正在使用一个视图,它必须是非托管的...
我认为如果您想使用远程数据库,您应该在 settings.py 文件下的数据库设置中定义该数据库设置。 而不是通过使用该数据库名称,您可以访问该数据库 table like
EmpView.objects.using('db_name').filter()
你还应该在模型中定义你的字段。