Django ORM,即使获得了过滤,也与条件不匹配的数据

2024-09-28 05:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个叫做Anayltics的模型,如下所示
此模型的url字段包含各种值(例如“/login”、“sports/1234”、“search”)

class Analytics(models.Model)
    url = models.CharField(max_length=255, null=True)
    value = models.IntegerField(null=True)

我试图只检索url中包含以下类别列表中字符串的记录。

category_list = ['fashion', 'food', 'sports']

filter_q = reduce(operator.or_, (Q(url__contains=c) for c in category_list))

query = Analytics.objects.filter(filter_q)

但是,也会检索包含意外url的记录,例如url'/login'。
请告诉我哪里不对


Tags: 模型trueurlsearchmodels记录loginfilter
1条回答
网友
1楼 · 发布于 2024-09-28 05:20:55

使用此查询

import operator
import functools
from django.db.models import Q

category_list = ['fashion', 'food', 'sports']
query_filter = functools.reduce(operator.or_, (Q(url__icontains = category) for category in category_list))
result = Analytics.objects.filter(query_filter)

相关问题 更多 >

    热门问题