我想知道 first()
是否与limiting querysets相同。Model.objects.first()
和Model.objects.all()[:1]
在速度上是否相同?
您必须记住first()
与Model.objects.all()[0]
相同,所以我的想法是它们不相同,但是我不明白为什么我们有一种便捷的方法first()
。
最佳答案
Model.objects.first()
返回一个实例或None
,而Model.objects.all()[:1]
返回带有零个或一个实例的一部分查询集。这是Django 1.10的first()
的源代码:
def first(self):
"""
Returns the first object of a query, returns None if no match is found.
"""
objects = list((self if self.ordered else self.order_by('pk'))[:1])
if objects:
return objects[0]
return None
关于python - Django管理器first()vs Model.objects.all()[:1],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42621402/