Django等效于MySQL';s在_集合()中查找_

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。对于那些自

在旧版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。

对于那些自定义的东西,我想你可能会被卡住

例如:

# 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