我是Django的新手,我正在使用mysql DB的项目中工作。 他们将数据库导入Django模型,似乎它没有丢失任何东西。但是,当我使用Django进行查询时,它表示缺少一个表。我检查了数据库中的表名,它是匹配的。很奇怪。无论如何,我通过使用语法" .using(' db_config')。值(' column1',' column2')"解决了这个问题。
该模型如下:
class UserRoles(models.Model):
role_id = models.AutoField(primary_key=True)
class Meta:
managed = False
db_table = 'user_roles'
给出错误的命令:
UserRoles.objects.filter(role_id=number)
该命令没有抛出错误:
r = UserRoles.objects.using('db_config').values('role_id')
q = r.filter(role_id=number)
错误如下:
django.db.utils.OperationalError: no such table: user_roles
我的问题是为什么Django以前找不到这张桌子?为什么我需要使用方法"值"找到行??我检查了所有字段都匹配。我还在
之前运行了makemigrations,syncdb PS:另一件奇怪的事情就是metatag" unique_together"也没有工作。我不得不使用方法"值"使查询也工作。我不知道它是否以某种方式相关。答案 0 :(得分:2)
这与values
无关,您在第二个查询中使用using
方法,该方法用于告诉django您要查询哪个数据库。
此后,您正在查找已应用相关迁移的单独数据库
答案 1 :(得分:0)
对于其他在Google上找到它的人来说,我遇到的问题导致了相同的错误(事实证明这不是OP的问题)是我有一个将模型分配给不同主机的路由器用于读取和写入,并且写入主机位于防火墙后面,因此如果您发现Django在说该表确实存在时说该表不存在,那将是另一回事。