Python queryset过滤器仅根据第一行-Django
使用Django中的queryset.filter()绑定到筛选数据。但它并没有达到我的预期。有人能纠正我吗。Python queryset过滤器仅根据第一行-Django,python,django,Python,Django,使用Django中的queryset.filter()绑定到筛选数据。但它并没有达到我的预期。有人能纠正我吗。 单个数据单元如下所示。(每行之间用\n分隔) こちらは1.行です。(0.57)\n こちらは2.行です。(0.67)\n こちらは3.行です。(0.77)\n こちらは4.行です。(0.87)\n こちらは5.行です。(0.697) 代码如下 queryset = queryset.filter(predicted_result__regex = r"\A.*", predicted_
单个数据单元如下所示。(每行之间用\n分隔)
queryset = queryset.filter(predicted_result__regex = r"\A.*", predicted_result__contains='(0.5') |\
queryset.filter(predicted_result__regex = r"\A.*", predicted_result__contains='(0.6') |\
queryset.filter(predicted_result__regex = r"\A.*", predicted_result__contains='(0.7')
输出:这将考虑所有5条线路,而不仅仅是第一条线路 目标:
只有get值包含在得分之间的第一行(括号内)0.5到0.8。所有其他行都应忽略 预期结果:
当前查询的问题是“单个数据单元”当前是字符串。使用正则表达式计算可能需要或不需要的内容仍将返回“True”上的整个字符串。您应该将“文本”与“浮点”值分开,以便更有效地查询
class Model(model):
descriptor = models.CharField()
value = models.FloatField()
现在您可以自己查询“值”
如果由于任何原因无法更改模型,则需要执行多个查询并使用union/intersection/DIFFERSION方法
fives_queryset = queryset.filter(predicted_result__contains'(0.5')
sixes_queryset = queryset.filter(predicted_result__contains'(0.6')
sevens_queryset = queryset.filter(predicted_result__contains'(0.7')
result_queryset = union(fives_queryset, sixes_queryset, sevens_queryset)
它们不是都是真的吗?实际上,你并不是在否定坏值……它的“工作代码”。但那不是我想要的。我只需要得到两个函数的第一行代码:predicted_result_contains和predicted_results_regexthes不是django标准。predicted_result是字段而不是函数这是正确的。但改变模式不是我需要的。我不能改变模型。难道没有其他方法可以做到这一点吗?你发布的代码也在做同样的事情。无论如何,谢谢!