Фильтрация чисел из списка django

В моей базе данных есть список пользователей, у каждого из них есть id, этот id - CharField, он может содержать либо строку, содержащую число (например, "058"), либо строку, содержащую что-то вроде этого "0Y5"

.

Поле id не является первичным ключом

Я хочу отфильтровать список пользователей, чтобы в нем были только те, у которых id содержит действительное число, например "005", "011", "122",

Я попробовал это, но, похоже, не работает:

 users = User.objects.filter(id.isnumeric == True)

Вы можете использовать регулярное выражение (regex) в запросе, чтобы найти строки с числами:

users = User.objects.filter(id__regex=r'^[0-9]*$')

<1>> будет соответствовать только числам от начала ('^[0-9]*$') строки до конца (^), где числа $ могут повторяться ([0-9]). * означает, что то, что находится между кавычками, должно интерпретироваться как rчистая строка, поэтому не будет рассматриваться как управляющий символ.\

Я попробовал это и это работает, я не знаю, является ли это лучшим, но это работает!:

users = User.objects.all()
ids = [user.id for user in users if user.id.isnumeric()]
Вернуться на верх