【发布时间】:2021-01-17 23:40:33
【问题描述】:
我使用mySQL 作为我的 django 项目的数据库。此数据库中的一个表字段具有由, 分隔的文本值,例如:
tags = "Django, MySql, C, C++, Python, Cython"
我在过滤查询集时需要检查上述字段中是否有我想要的字符串:
这是我的查询:
my_tag = "C"
posts = Post.objects.filter(tags__icontains=my_tag).order_by('-date_created')
上面的查询也返回Cython,但我只期望C,这是因为标签文本没有被,分割。如何在文本中找到刺痛,在常规 python 中有 str.split(',') 或 regex 但是在 django 我不知道!
【问题讨论】:
-
使用
FIND_IN_SET(tag, tags)作为过滤器。 -
你的意思是像
Post.objects.filter(FIND_IN_SET(my_tag, tags)).order_by('-date_created')? -
在 SQL 中是正确的,但我不知道这在 django 中是什么样子的...测试。
-
应该类似于
Post.objects.extra(where=['FIND_IN_SET(my_tag, tags)']).order_by('-date_created'),但仍然无法正常工作。 -
你能说
ORDER BY x DESC而不是ORDER BY -x吗?
标签: mysql django regex django-queryset