我需要在我的 Django 应用程序(1.6 版)中使用数据库 View (使用 Postgres)。过程如下:
- 我创建了一个 View ,然后运行
python manage.py inspectdb
以获得正确的模型表示。 - 我已更改模型以反射(reflect)这种情况。
这是用于查看的代码(它确实有效):
SELECT employee.employee_id, employee.firstname, employee.lastname, employee.birthdate, employee.is_active
FROM dblink( blah blah);
这是为 django 模型生成的代码:
class Employee(models.Model):
employee_id = models.IntegerField(blank=True, null=True)
firstname = models.TextField(blank=True)
lastname = models.TextField(blank=True)
birthdate = models.DateField(blank=True, null=True)
is_active = models.NullBooleanField()
class Meta:
managed = False
db_table = 'employee'
我尝试过只使用 managed
(而不使用 db_table
)或同时使用两者。
无论如何,如果我使用 syncdb,我会得到这样的错误:
django.db.utils.ProgrammingError: 引用关系“employee”不是表
好吧,这是真的,但我到底该怎么办呢?
我也玩过迁移,但我也遇到了一些错误:
django.db.utils.ProgrammingError:关系“dblink_test2_employee”不存在
有什么帮助吗?我是否忽略了一些您非常清楚的事情?
最佳答案
在单独的机器上创建一个新的空数据库。 使用从 inspectdb 生成的新 models.py 提取代码到一个临时的新应用程序(使用 startapp 创建) 然后运行 makemigrations。 这将在临时应用程序的迁移目录中创建初始迁移文件。
这是您的初始迁移文件。
将此复制到您的本地计算机。
关于django - Django 中使用的 PostgreSQL View (managed=False)不能正确同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263276/