How to dynamically compose an OR query filter in Django?

后端 未结 14 1503
清歌不尽
清歌不尽 2021-01-22 05:24

From an example you can see a multiple OR query filter:

Article.objects.filter(Q(pk=1) | Q(pk=2) | Q(pk=3))

For example, this results in:

14条回答
  •  死守一世寂寞
    2021-01-22 06:05

    Found solution for dynamical field names:

    def search_by_fields(value, queryset, search_in_fields):
        if value:
            value = value.strip()
    
        if value:
            query = Q()
            for one_field in search_in_fields:
                query |= Q(("{}__icontains".format(one_field), value))
    
            queryset = queryset.filter(query)
    
        return queryset
    

提交回复
热议问题