Django等效于MySQL';s在_集合()中查找_
在旧版MySQL数据库中,我有一个表,其中的字段是逗号分隔的值列表:Django等效于MySQL';s在_集合()中查找_,mysql,django,Mysql,Django,在旧版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没有。不应该有。这是一个特别非标准的MySQL函数,Django不关心db特定的行为。使用自定义SQL。对于那些自
id | field
---------------
1 | 2,4,8
2 | 1,4,15,24
以下查询的Django等价物是什么
SELECT * FROM `table_name` WHERE FIND_IN_SET(15, field)
假设Django将此字段视为常规的
CharField
没有。不应该有。这是一个特别非标准的MySQL函数,Django不关心db特定的行为。使用自定义SQL。对于那些自定义的东西,我想你可能会被卡住
例如:
# Warning, MySQL specific query ahead!
Model.objects.extra(where=['FIND_IN_SET(15, field)'])
使用extra()方法作为最后手段。根据Django文档,extra()方法在任何时候都可能被弃用
最好在Django中使用正则表达式
示例:
- Model.objects.filter(字段\uuu-iregex=r'(24),?'))
上述查询集将检查字段列中的数字“24”,如果逗号后跟数字(24,25)或只有数字(12,24),则也会匹配。模块没有任何帮助。当然我可以做这个查询(使用Daniel建议的定制SQL),我想知道是否有Django ORM等价物。是的!我正要告诉您使用原始SQL