Django Models.get失败,但.filter和.all works对象存在于数据库中

2024-05-11 23:15:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这件事上绞尽脑汁。这个模型似乎是正确的,理论上所有的注释排列都应该有效——但是唯一能成功检索用户的东西是.filter和.all;.get不起作用;我可以使用.filter或.all——但是为什么get不起作用呢?在

我要重申,在这种情况下,直接SQL查询100%有效。所有的导入都到位了,在较低的层次上运行得很好——同样,过滤器工作正常,一切正常,但是由于某些原因get失败了。在

class UserModelTest(TestCase):
def test_getUserByUsername(self):
    sanity = True
    try:
        #u = User.objects.filter(username='wadewilliams')
        u = User.objects.get(username='wadewilliams')
        #u = User.objects.get(pk=15773)
        #u = User.objects.all()
    print u
    except User.DoesNotExist:
        sanity = False

    self.assertEqual(sanity, True)

。。。除非我取消对filter或all的注释。。。两个都有,不行。在

模型。。。在

^{pr2}$

Tags: 用户模型selftruesqlgetobjectsusername
1条回答
网友
1楼 · 发布于 2024-05-11 23:15:51

测试套件会创建一个空白的模拟数据库,因此即使在生产/开发数据库中存在,也找不到用户。在

从文件中: 在运行测试时从生产数据库中查找数据? 如果您的程式码在编译资料库的模组时尝试存取资料库,则会在建立测试资料库之前发生,可能会产生意想不到的结果。例如,如果在模块级代码中有一个数据库查询,并且存在真实的数据库,则生产数据可能会污染测试。无论如何,在代码中包含这样的导入时数据库查询是一个坏主意——重写代码,使其不会这样做。在

相关问题 更多 >