如何拉值从queryset去数据库一次django



我有一个为另一个方法设置数据的函数。这是为了限制对数据库的调用。

设置方法如下:

def get_customers(request):
    customer_list = Customer.objects.filter(pk=request.user)
    populated_customer = get_customer(request, customer_list)

处理的方法如下所示:

def get_customer(request):
    for customer in customer_list:
         if customer.id == 3:
              # do something with this customer

我要处理数百万条记录,而不是执行for循环来查找我需要的客户,我如何在不访问数据库的情况下将其从列表中取出呢?

似乎你在这里做的是把所有的用户记录拉到python (django)内存中,然后通过这个QuerySet循环过滤它们。

一个更好的方法可能是将这些查询链接到你的数据库,这是由django QuerySet语言支持的。

查看有关链式过滤器方法的文档是明智的,但是一个示例查询可能看起来像这样:
customer_list = Customer.objects.filter(pk=request.user).filter(id=3)

如下所示,这与以下不同:

customer_list = Customer.objects.filter(pk=request.user,id=3)

相关内容

  • 没有找到相关文章

最新更新