在旧版MySQL数据库中,我有一个表格,其中的字段是以逗号分隔的值列表:
id | field
---------------
1 | 2,4,8
2 | 1,4,15,24
以下查询的Django等价物是什么?
SELECT * FROM `table_name` WHERE FIND_IN_SET(15, field)
假设Django将此字段视为常规CharField
。
答案 0 :(得分:6)
对于那种习惯,我认为你可能会被extra()
困住示例:
# Warning, MySQL specific query ahead!
Model.objects.extra(where=['FIND_IN_SET(15, field)'])
答案 1 :(得分:3)
没有一个。而且不应该有一个。这是一个特别非标准的MySQL函数,Django不关心特定于db的行为。使用自定义SQL。
答案 2 :(得分:-1)
使用extra()方法作为最后的手段。根据Django文档,可以随时弃用extra()方法。
最好在Django中使用正则表达式。
示例:
上面的QuerySet将在字段列中检查数字'24',并且如果逗号后跟数字(24,25)或仅数字(12,24),也将匹配。