backend/django
Django: Filter with CharField length
seul chan
2018. 7. 26. 21:30
Use Length
from django.db.models.functions import Length
qs = queryset.annotate(text_len=Length('text_field')).filter(text_len__gt=10)
Only can use Django >= 1.8
Use extra
qs = queryset.extra(where=["CHAR_LENGTH(text_field) > 10"])
Use regex
inside filter
qs = queryset.filter(text_field__regex=r'.{10}.*')
Register Length
to CharField
lookup
from django.db.models import CharField
from django.db.models.functions import Length
CharField.register_lookup(Length, 'length')
qs = queryset.filter(text_field__length__gt=10)
Only can use Django >= 1.9