关系“org_user_orguser”不存在

时间:2015-12-16 16:00:25

标签: python django postgresql

我正在尝试在Django 1.8中进行迁移。

迁移看起来像这样:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations

def update_email_username(apps, schema_editor):
    user_id = 'the-uuid-will-go-here'
    OrgUser = apps.get_model("org_user", "OrgUser")
    for person in OrgUser.objects.filter(user_id=user_id):
        person.username = "person@email.com"
        person.save()


class Migration(migrations.Migration):

    dependencies = [
        ('org_user', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(update_email_username),
    ]

我得到了:

django.db.migrations.graph.CircularDependencyError: org_user.0001_initial

我也试过

dependencies = [
    ('org_user', '__first__'),
]

我得到了:

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

但是org_user绝对有一个模型,它位于我的settings.py。

我的迁移到底发生了什么?如何成功运行此迁移中列出的更改?

如果有帮助的话,这是Postgres。

编辑:

当我暂时删除迁移并重新创建数据库时,一切都很好(包括org_user),如果我然后尝试将迁移添加回模型的/ migration目录并运行它,我会收到错误:{ {1}}

1 个答案:

答案 0 :(得分:0)

我真的不知道,如果我理解正确的话...... 通常,从一个新项目开始,它的工作原理如下:

  1. 您可以在models.py
  2. 中定义模型
  3. 您致电manage.py makemigrations
  4. 将创建您的第一个(初始)迁移。它不应该在自己的包中具有任何依赖性
  5. 每次更改模型时,都需要调用manage.py makemigrations,并在迁移文件夹中自动创建新的迁移。
  6. 如果您有多个软件包,则自动生成的迁移通常会将每个软件包的最后一次迁移作为依赖项。如果您不想做任何数据游戏或任何事情,则不需要关心依赖项。

    您可以找到更多信息here

    应始终使用

    自动生成初始迁移
    makemigrations
    

    命令

    编辑:你确定你不想拥有:

    ('orguser',  '0001_initial')