如果它只在第一行包含0.5,我需要过滤此查询集。 作为示例,第一组是真实的,第二组是假的。
1. ('1. First row (0.5)\n2. Second row (0.5)\n3. Third row (0.69)\n4.
Fifth row(0.67)\n5. Sixth row(0.66)',)
2. ('1. First row (0.76)\n2. Second row (0.5)\n3. Third row (0.69)\n4.
Fifth row(0.67)\n5. Sixth row(0.66)',)
我尝试了这个查询但是第二个例子也是真的。
queryset = queryset.filter(value__regex = r"\A.*", value__contains='(0.5')
如何只查看部分值?
答案 0 :(得分:1)
我相信你需要先剪切字符串,获取第一行,然后使用contains查询它。 Django具有Substr功能。这是一个例子。
from django.db.models.functions import Substr
queryset.filter(alias=Substr('first_row', 1, 15), first_row__contains='(0.5'))
答案 1 :(得分:1)
我相信你应该改变你的正则表达式,试试这个:
queryset = queryset.filter(value__regex = '^([^\\n]+\(0\.5.*?)\\n')
答案 2 :(得分:0)
如果行始终由\n
终止,第二行始终以2.
开头,则可以尝试以下内容:
search_term = '(0.5)\n2.'
qs = qs.filter(value__contains=search_term)