django中查询集last()和latest()有什么区别?

shr*_*lvi 7 python django django-models django-queryset

我想获取最后插入的数据,所以我使用了 django 代码

user = CustomUser.objects.filter(email=email).last()

所以它给了我最后的用户详细信息。

但后来我实验性地使用了:

user = CustomUser.objects.filter(email=email).latest()

然后它没有给我一个用户对象。现在,最早()、最新、第一个和最后一个()之间有什么区别?

Wil*_*sem 15

.first()\xc2\xa0 [Django-doc] / .last()\xc2\xa0 [Django-doc].earliest(\xe2\x80\xa6)\xc2\xa0 [Django-doc] / .latest(\xe2\x80\xa6)\xc2\xa0 [Django-doc]之间存在一些差异。主要有:

\n
    \n
  • .first()并且.last()采用字段名称(或可排序表达式)进行排序,它们没有参数,.earliest(\xe2\x80\xa6).latest(\xe2\x80\xa6)有;
  • \n
  • .first()并将.last()处理查询集的排序(如果有),.earliest(\xe2\x80\xa6)并将.latest(\xe2\x80\xa6)省略任何.order_by(\xe2\x80\xa6)已使用的子句;
  • \n
  • 如果查询集未排序.first().last()将按主键排序并返回该查询集的第一个/最后一个项目,.earliest(\xe2\x80\xa6)如果未指定字段,.latest(\xe2\x80\xa6)将查找get_latest_by模型选项\xc2\xa0 [Django-doc] ;
  • \n
  • .first()如果查询集为空,则.last()返回;None.earliest(\xe2\x80\xa6)and.latest(\xe2\x80\xa6)会引发DoesNotExist异常\xc2\xa0 [Django-doc]
  • \n
\n