Фильтрация чисел из списка 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()]