在 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()

你还应该在模型中定义你的字段。