我想知道 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/

10-14 19:49