简体   繁体   English

如何在Django中进行长时间查询

[英]How can i make long query in django

I have this query filter. 我有这个查询过滤器。 But I don't know how to make it work 但是我不知道如何使它起作用

st = Student.objects.filter(
    if request.GET['student_number']:
        Q(student_number__icontains=request.GET['student_number'])&
    if request.GET['student_region']:
        Q(student_region__icontains=request.GET['student_region']) &
    if request.GET['student_status']:
        Q(student_status__icontains=request.GET['student_status']) &
    if request.GET['student_process']:
        Q(student_process__name__icontains=request.GET['student_process']) &

Is there any better way of doing that? 有什么更好的办法吗?

You can build the query dynamically like so: 您可以像下面这样动态构建查询:

query_list = []
for field_name in ['student_process', 'student_status', 'student_number', 'student_region', ]:
    value = request.GET.get(field_name, None)
    if value:
        query_list.append(Q(**{field_name+'s_icontains': value}))
queryset = Student.objects.filter(reduce(operator.and_, query_list))

Here's a good blog post on the topic 这是有关该主题的一篇不错的博客文章

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM