Как сделать запрос на "больше чем" в текстовом поле в Django?

У меня есть определенное поле в моей базе данных, которое является текстовым полем. Однако для определенного использования у меня есть набор записей, которые включают только числа (сохраненные как строка, конечно), и я хочу запросить их, используя "gte" (больше, чем). Обычно я делаю так:

MyTable.objects.filter(text_field__gte=100)

Однако это не дает никаких результатов. Похоже, что мне нужно преобразовать это поле в целое число. Могу ли я сделать это в рамках этого же запроса? На самом деле запрос более громоздкий и включает внешние таблицы (что-то вроде MyTable.objects.filter(associated_table__other_table__text_field__gte=100)), но я упрощаю его для ясности.

Существует функция Cast, которую можно использовать вместе с аннотацией. Надеюсь, нижеприведенный вариант подойдет для этой цели:

from django.db.models.functions import Cast
from django.db.models import IntegerField
MyTable.objects.annotate(text_int=Cast('text_field', output_field=IntegerField())).filter(text_int__gte=100)
Вернуться на верх