Python Django Models.get失败,但数据库中存在.filter和.all works-object

Python Django Models.get失败,但数据库中存在.filter和.all works-object,python,sql,django,tdd,models,Python,Sql,Django,Tdd,Models,这件事让我绞尽脑汁。该模型似乎是正确的,从理论上讲,所有注释的排列都应该有效——但唯一能够成功检索用户的是.filter和.all。得到不起作用;我可以使用.filter或.all,但为什么不能工作呢 我将重申,在这种情况下,直接SQL查询100%有效。所有导入都已就绪,并且在较低的级别上运行良好——同样,过滤器可以正常工作,但get由于某些原因失败 class UserModelTest(TestCase): def test_getUserByUsername(self): sani

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

我将重申,在这种情况下,直接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)
。。。该测试失败,除非我取消对筛选器或所有。。。两个都有,不行

而模型

class User(models.Model):
    userid = models.IntegerField(primary_key=True, db_column='userID')
    username = models.CharField(max_length=135)
    realname = models.CharField(max_length=150, db_column='name')
    email = models.CharField(max_length=765, blank=True)

class Meta:
    db_table = u'users'

def __unicode__(self):
    return self.username + ' (' + self.email + ')'

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

从文档中: 运行测试时从生产数据库中查找数据?
如果您的代码试图在编译数据库模块时访问数据库,则这将在设置测试数据库之前发生,并可能导致意外结果。例如,如果在模块级代码中有一个数据库查询,并且存在一个真实的数据库,那么生产数据可能会污染测试。无论如何,在代码中包含这样的导入时数据库查询是一个坏主意-重写代码,使其不会执行此操作。

您可以将堆栈跟踪添加到问题中吗?您得到的确切错误消息是什么?我创建了一个视图,试图为您提供堆栈跟踪。我创建了url路径并触摸了视图。它运行得非常完美。然后我重新运行了我的单元测试。。。他们通过了!!!我不知道为什么仅仅触摸视图就可以解决单元测试问题?真奇怪。谢谢你的帮助;对此的任何其他解释都非常感谢。认为这可能是unittest模块的一些奇怪之处吗?好吧,我错了两个。我省略了测试断言。当我重新添加时,测试失败了,但是视图似乎仍然可以正常工作。这是单元测试回溯。。。。。。。。。。。。。。失败:test\u getUserByUsername(forge.tests.users\u test.UserModelTest)-------------------------------------------------------------回溯(最近一次调用):文件“/media/sf\u host/checkout/33/localmotors/localmotors/forge/tests/users\u test.py”,第72行,在test\u getUserByUsername self.assertEqual中(健全,True)断言者错误:错误!=真的