Этот ответ является расширением ответа @desfido. В основном, отделяется тип объекта от функции, фильтрующей поле CommaSeperatedInteger. Выходит из этого решения быстрее, чем использование регулярного выражения для поиска правильного значения. Я использовал это регулярное выражение.
_regex = r"(^|(\d*,)+)(%s)((,\d*)+|$)" %('|'.join(_ids))
Если вы хотите найти несколько значений внутри значения, разделенного запятыми, можно вызвать приведенную ниже функцию в цикле
Аргументы этой ключевой функции этой функции: -
cs_field_name будет именем целочисленного поля с запятой.
x будет целым числом для поиска.
Возвращает объект Q, который затем может быть объединен и использован дляфильтрация
def search_comma_seperated_field(cs_field_name,x):
startswith_key = cs_field_name + "__startswith"
endswith_key = cs_field_name + "__endswith"
contains_key = cs_field_name + "__contains"
exact_key = cs_field_name + "__exact"
return Q(**{startswith_key : x+','}) | \
Q(**{endswith_key:','+x}) |\
Q(**{contains_key : ',{0},'.format(x)}) |\
Q(**{exact_key:x})