Django:按文本字段的长度查找

Ram*_*hum 10 python sql django

我有一个带有文本字段的模型.我想进行一次查找,返回该字段中包含长度为7或更多字符串的所有项目.可能?

如何查找该字段不在的所有对象''

小智 15

我认为正则表达式查找可以帮助您:

ModelWithTextField.objects.filter(text_field__iregex=r'^.{7,}$')
Run Code Online (Sandbox Code Playgroud)

或者你总是可以在Django模型上执行原始SQL查询:

ModelWithTextField.objects.raw('SELECT * FROM model_with_text_field WHERE LEN_FUNC_NAME(text_field) > 7')
Run Code Online (Sandbox Code Playgroud)

其中len_func_name是DBMS的"字符串长度"函数的名称.例如在mysql中,它被命名为"length".


jon*_*nny 8

从 django 1.8 开始,您可以使用Length数据库功能:

from django.db.models.functions import Length
qs = ModelWithTextField.objects \
        .annotate(text_len=Length('text_field_name')) \
        .filter(text_len__gte=7)
Run Code Online (Sandbox Code Playgroud)