Django ORM фильтр только по нижнему регистру

Как использовать Django ORM для фильтрации объектов, которые показывают только строчные буквы? Например, в моем случае, я хочу обновить все электронные письма, которые имеют "нестрочные" объекты на "строчные".

from django.db.models.functions import Lower

User.objects.exclude(email__islower=True).update(email=Lower("email"))
                             /|\
                              |

В настоящее время я использую выражение __regex для решения этой задачи,

User.objects.exclude(email__regex="^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9-]+)*$").update(email=Lower("email"))

с этим шаблоном электронной почты: https://www.abstractapi.com/tools/email-regex-guide

Но, надеюсь, есть лучшие решения.

Вернуться на верх