gpt4 book ai didi

sql - Django : Error thrown by database : relation "_mytable" does not exist (for a content_type) . 丢失了应用程序名称

转载 作者:行者123 更新时间:2023-12-04 07:06:22 24 4
gpt4 key购买 nike

在 Django 中,我有一个模型,我们称之为“MyTable”,它使用 content_type 外键来引用 Profile。

在大多数情况下(如在我的单元测试中)我没有问题,但在 View 中的某些情况下,我尝试保存 Profile 对象(使用 Profile 的 .save() )并且数据库抛出此异常:

relation "_mytable" does not  exist

我认为这是因为 ORM 在 Profile 和 MyTable 之间进行了一些反向查找,原因是从 MyTable 到 Profile 的 ForeignKey。

现在数据库中肯定有一个名为 myapp_mytable 的关系。但是在这种情况下,ORM 似乎丢失了应用程序名称。检查 SQL 确认了这一点,它确实试图从 _mytable 而不是 myapp_mytable 中进行选择。

有没有人见过这样的事情或有什么建议?

最佳答案

我想你现在已经解决或解决了这个问题,但我遇到了同样的问题。

我的情况听起来和你的有点不同,但我花了几个小时才弄明白,所以我会在这里发布这个问题以供引用。

就我而言,我的 中有代码型号 期望数据预先加载到数据库中,但事实并非如此。

从 shell 运行时,查询似乎工作正常,但是,当我在单元测试中运行相同的代码时,它会因“找不到关系”错误而失败。

原因是,当从 shell 运行时,我期望的数据已经加载到我的数据库中。然而,在测试用例的情况下(“manage.py 测试”行为是在测试之前创建一个空的数据库),当我定义测试用例的夹具时,夹具在模型验证/评估之前没有加载。因此,当我期待它时,预期的夹具数据并不存在。

关于sql - Django : Error thrown by database : relation "_mytable" does not exist (for a content_type) . 丢失了应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com