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".
从 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)