Django. Условия в наборе запросов - PullRequest
1 голос
/ 25 апреля 2020

У меня есть таблица «Таблица» и поле «Поле». Мне нужно отфильтровать таблицу со следующим условием:

if (field.isdigit() and len(strip(field)) <= 4):
    do somethimg

или

if (field.isdigit() and int(field) <= 10000):
    do somethimg

Как это будет выглядеть в запросе?

Table.objects.filter(condition).update(field="xxx")

Спасибо

1 Ответ

3 голосов
/ 25 апреля 2020

Вы можете проверить это с помощью регулярного выражения с помощью __regex lookup [Django -doc] :

Table.objects.filter(<b>field__regex=r'^\d{,4}$'</b>).update(field='xxx')

или если ведущий и трейлинг разрешены пробелы:

Table.objects.filter(<b>field__regex=r'^\s*\d{,4}\s*$'</b>).update(field='xxx')

При этом если ваше поле содержит только числовые данные, я настоятельно рекомендую использовать числовые поля, такие как IntegerField [Django -doc] .

...