django中使用的PostgreSQL视图(使用managed = False)无法正确同步

时间:2014-01-21 16:07:32

标签: django postgresql django-models

我需要在我的django应用程序(版本1.6)中使用数据库视图(使用Postgres)。流程如下:

  1. 我创建了一个视图,然后运行python manage.py inspectdb以获得正确的模型表示。
  2. 我改变了模型以反映这种情况。
  3. 以下是视图代码(确实有效):

    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: referenced relation "employee" is not a table

    好的,这是真的,但我该怎么办呢?

    我也玩过迁移,但我也遇到了一些错误:

    django.db.utils.ProgrammingError: relation "dblink_test2_employee" does not exist

    任何帮助表示赞赏?我是否忽视了一些非常清楚的事情?

1 个答案:

答案 0 :(得分:0)

在另一台机器上创建一个新的空数据库。 使用来自inspectdb的新models.py在临时新应用程序中创建代码(使用 startapp 创建) 然后运行makemigrations。 这将在临时应用程序的迁移目录中创建初始迁移文件。

这是您的初始迁移文件。

将其复制到本地计算机。