如何通过django转到数据库从查询集中提取值

时间:2014-03-19 00:23:35

标签: python django django-queryset django-orm

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

设置方法如下:

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循环来找到我需要的客户,如何在不进入数据库的情况下将其从列表中拉出来,因为我正在处理数百万条记录。

1 个答案:

答案 0 :(得分:0)

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

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

查看有关chained filter methods的文档是明智的,但示例查询可能如下所示:

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

As shown here,这与以下内容不同:

customer_list = Customer.objects.filter(pk=request.user,id=3)
相关问题