我有一个 Django 模型:
class ActivationCode(models.Model):
id = models.FloatField(primary_key=True)
user = models.ForeignKey('User', to_field='id', on_delete=models.CASCADE)
我很难选择一个 ActivationCode 实例,所以我尝试使用它自己的 id 获取实例:
activation_codes = ActivationCode.objects.all()
print len(tuple(activation_codes))
>>> 1
for code in activation_codes:
cid = code.id
ActivationCode.objects.get(id=cid)
>>> DoesNotExist: ActivationCode matching query does not exist.
这是怎么回事?为什么当我使用它自己的 id 时它说该对象不存在?为什么我可以使用 .all() 而不是 .get() 来获取实例?
可能值得注意的是,上面的代码是在测试环境(TestCase)中的基于类的视图中运行的。当我在终端中尝试同样的事情时,它工作正常。