但是,这对我来说并不简单。我只想要正常的数据库行为。
非惰性查询集也不容易。想象一下
QuerySet
看起来像:
Person.objects.all().filter(id=1)
如果查询集是
渴望的
它会先拿到
全部的
Person
s、 因为
Person.objects.all()
,然后获取过滤后的项,也许还会更新记录,即使根本不需要获取项。如果
人
s是巨大的,它甚至可能占用服务器崩溃所需的大量内存。
例如,您可以使用强制评估
bool(â¦)
,
len(â¦)
,
list(â¦)
,因此:
from django.db import transaction
from django.http import HttpResponse
from .models import Person
@transaction.atomic
def test(request):
qs = Person.objects.filter(id=1).select_for_update()
bool(qs) # noqa: evaluate the queryset
qs.update(name='Tom')
return HttpResponse('Test')