以下代码未返回对象,但它“应该”。我错了,我错了吗?我错了?
return Recipient.objects.filter(
models.Q(mobile=mobile,
email=email,
incentive__id__exact=incentive_id) |
models.Q(friends_mobile=mobile,
friends_email=email,
incentive__id__exact=incentive_id)
).order_by(
'-date_created')[:1].get()
使用
.get()
是有问题的。如果只对一个对象使用QuerySet,它将返回一个对象,但是如果有更多的对象,它将抛出MultipleObjectsReturned
错误,如果QuerySet为空,它将抛出DoesNotExist
错误。在所以问题很可能是一个查询集,它不适用于您需要的特定条件。解决方案?返回默认值。在
最后,您可以使用
[0]
,而不是仅限于一个对象然后获取它,而且,正如@pythonishvili所提到的,您可以对激励进行预过滤。总而言之,应该是这样的(为了更好的可读性,我将查询拆分为多行):相关问题 更多 >
编程相关推荐