Django - 如何过滤逗号分隔的字符串

标签 django

在我的 Django models.py 中,我有一个“流派”字段(models.TextField)。该字段有时只包含一个字符串,有时包含一个逗号分隔的字符串列表,如下所示:

Comedy, Action, Drama

或者

Action, Fantasy

或者如上所述,只有一个字符串,例如仅

Comedy

现在我认为我想做这样的事情:

queryset_comedy = Movies.objects.get_queryset().filter(genre__in=["Comedy", "Family"])
queryset_action = Movies.objects.get_queryset().filter(genre__in=["Action", "Adventure"])
queryset_drama = Movies.objects.get_queryset().filter(genre__in=["Drama", "Thriller"])

我提到我的查询仅匹配根据流派字段独立的字段值。例如,电影元素一具有以下流派字符串:

喜剧、 Action

而电影元素二仅将“Comedy”作为独立字符串。该查询仅输出具有独立字符串“Comedy”的 Movie 对象,而不输出 Comedy、Action。

当为流派提供多个排序字符串时,如何使电影元素匹配?

最佳答案

作为直接解决方案,您可以将多个 contains 查询一起进行OR。即

queryset_comedy = Movies.objects.filter(Q(genre__contains="Comedy") | Q(genre__contains="Family"))

但是,例如,我建议迁移到更合适的表示形式

  • 使用ArrayField (特定于 PostgreSQL)
  • 将字符串列表存储在 JSONField
  • 将类型存储在另一个表中,并使用 ManyToManyField 将其与电影 关联起来。

关于Django - 如何过滤逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68136346/

相关文章:

Python Django 检查属性是否存在或已设置

javascript - 通过 Django 模板变量将 Python 对象传递给 JavaScript

django - 从 Git 克隆后,如何在 Ubuntu EC2 中编辑 Django 项目?

python - 如何将附加参数传递给自定义 python 排序函数

Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

mysql - 在 Django 中将 SQLite3 数据库迁移到 MySQL

python - Django:PYTHON_EGG_CACHE,访问被拒绝错误

mysql - 如何修复属性错误: 'bytes' object has no attribute 'encode' if using mysql?

python - Django 过滤来自自定义聚合函数的注释

python - Django 将 isoformat 字符串日期时间转换为元组并出现错误