在一个遗留的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
。
发布于 2011-11-29 14:14:47
对于那些习惯的东西,我认为你可能会被extra()卡住
示例:
# Warning, MySQL specific query ahead!
Model.objects.extra(where=['FIND_IN_SET(15, field)'])
发布于 2011-11-29 14:14:07
根本就没有。而且不应该有这样的问题。这是一个特别非标准的MySQL函数,Django并不关心特定于db的行为。使用自定义SQL。
发布于 2019-06-27 13:45:57
使用extra()方法作为最后的手段。根据Django文档,extra()方法可以在任何时候被弃用。
在Django中最好使用regex。
示例:
上面的QuerySet将检查字段列中的数字'24‘,如果逗号后面跟着数字(24,25)或只有数字(12,24),也会匹配。
https://stackoverflow.com/questions/8312039
复制