You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中能否传入含多分隔符的字符串实现视频过滤?

如何用逗号分隔的多关键词过滤视频标题

你当前的代码是直接把带逗号的完整字符串传给icontains,这会只匹配标题里包含python programming,django framework这个完整内容的视频,显然不符合你想匹配任意一个关键词的需求。

要实现匹配多个关键词中任意一个的效果,需要把逗号分隔的字符串拆成单个关键词,再用Django的Q对象构建OR查询条件,具体实现如下:

from django.db.models import Q

def videosfilter(request):
    ''' 视频过滤 '''
    # 实际场景中可从请求参数获取关键词,比如 request.GET.get('keywords', '')
    keyword_str = 'python programming,django framework'
    # 拆分关键词并清理空格、过滤空值
    keywords = [kw.strip() for kw in keyword_str.split(',') if kw.strip()]

    if not keywords:
        # 无有效关键词时返回空结果,也可根据需求改为返回所有视频
        return Video.objects.none()

    # 构建OR查询条件
    query_condition = Q()
    for keyword in keywords:
        query_condition |= Q(title__icontains=keyword)

    videos = Video.objects.filter(query_condition)
    return videos

关键点说明

  • 拆分清理:用split(',')拆分字符串后,通过strip()去除每个关键词前后的空格,同时过滤掉空字符串(比如用户输入连续逗号的情况)。
  • Q对象组合条件:Q()用于构建复杂查询逻辑,|代表逻辑“或”,这样只要视频标题包含任意一个关键词就会被筛选出来。
  • 边界处理:当没有有效关键词时,返回空QuerySet避免无意义查询,你也可以根据业务需求改成返回所有视频。

内容的提问来源于stack exchange,提问作者afi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:20:25