首页 文章

Django中的关系不存在错误

提问于
浏览
2

我知道有很多关于这个问题的问题,我查看了解决方案,不幸的是,这些都没有为我工作 .

我创建了一个名为“usermanagement”的新应用程序,并为应用程序添加了一个模型 . 添加模型后,我在设置中将用户管理添加到INSTALLED_APPS . 然后我运行了python manage.py makemigrations和python manage.py migrate . 这一切都很好!我也尝试使用app-name运行迁移 .

当我尝试通过使用以下方法将新模型实例添加到Python-Django shell中的数据库时,问题就出现了:

>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()

我收到以下错误:

django.db.utils.ProgrammingError:关系“usermanagement_clubofficial”不存在第1行:INSERT INTO“usermanagement_clubofficial”(“name”,“email”)...

以下是型号代码:

class ClubOfficial(models.Model):

    name = models.CharField(max_length=254)
    email = models.EmailField(max_length=254)

如果它有帮助,我使用postgresql,并尝试重新启动服务器 . 该程序中的其他应用程序也可以正常工作,只是usermanagemenet有这个问题 .

有谁知道会出现什么问题?

感谢您的时间!

注意:我现在创建了一个具有不同名称的新应用程序,来自用户管理的复制粘贴内容,一切正常 . 我认为问题可能是在我再次创建之前,有一个名为usermanagement的应用程序被删除之前 . 也许这会以某种方式弄乱数据库 .

1 回答

  • 0

    我碰到了这个 . 在我的情况下,我有一个以前工作的django应用程序,尚未转移到 生产环境 ,所以我删除了我的应用程序的迁移文件夹中的所有内容,然后使用django扩展我擦除了postgresql数据库和缓存文件:

    ./manage.py clear_cache
    ./manage.py clean_pyc
    ./manage.py reset_schema
    ./manage.py reset_db
    # then deleted all files (including __init__.py) from my app's migrations folder.
    

    我验证我的postgresql数据库没有表 . 然后我跑了:

    ./manage.py makemigrations
    ./manage.py migrate
    

    这给出了输出:

    No changes detected
    ./manage.py migrate
    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      (about 11 more lines of output here which are similar)
    

    值得注意的是,我的模型的名称在迁移中无处可去 . 我在postgresql数据库中打印了表格,Widget和Section表格都丢失了 . 运行应用程序给了我这个错误(我用'app'和'model'替换了它们的真实姓名):

    ProgrammingError at /my_path
    relation "app_model" does not exist
    LINE 1: ..."."my_field", "app_model"."my_field" FROM "appname...
    

    因此,未在数据库中创建模型的表 . 我的应用程序的迁移文件夹也是完全空的 . 解决方案是只将空 __init__.py 添加到我的应用程序的迁移文件夹中,然后运行 makemigrations 能够在该文件夹中创建并保存迁移文件 . 然后可以使用 migrate 执行此操作 . 您可以通过在迁移/文件夹中使用和不使用 __init__.py 运行 makemigrations 来自行测试 .

    这个解决方案不是我的,而是用户 Ljubitel 在另一个帖子上给出的解决方案,但不是那里接受的答案,但是接受的答案对我没有用,所以我在这里写了这个解决方案,希望能帮助别人 .

相关问题