通过字典和正则表达式过滤Django数据?

2024-03-29 06:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过结合字典和正则表达式来过滤Django数据。我的字典是这样的:

dict = {key: r'.*?' + value + '.*?$'} 

其中,键和值作为字符串变量

我想过滤数据,使我检索的所有行的键索引值都包含字符串值

table.objects.all().filter(**dict) 

然而,这并没有给我想要的争吵;事实上,它没有给我任何行,而所有带索引键的行都应该显示出来。我希望能深入了解这里可能出现的问题,以及如何着手解决问题。谢谢大家!

编辑:我更喜欢使用字典方法进行过滤,因为我将要过滤的键作为URL参数中给定的子字符串。如果您认为有其他方法可以从URL检索字符串并执行以下操作:

table.objects.all().filter(key: r'.*?' + value '*?$' ). 

我也会很感激,只是不知道如何做,因为我只有一个字符串作为变量键

编辑:键是“city”,值是“Philadelphia”,我正在查找索引为“city”=“Philadelphia”的行,但这些行不显示


Tags: 数据方法key字符串url编辑city字典
1条回答
网友
1楼 · 发布于 2024-03-29 06:35:52

你说key"city",而value"Philadelphi",如果我们在查询中替换它们,你基本上会写:

table.objects.all().filter(city= r'.*?Philadelphi*?$')

如果问题尚不可见,则当未指定查找时,会自动将其假定为exact查找,而希望使用regexiregex查找。此外,当您将值放入正则表达式中时,还应将其转义:

import re

key = '%s__iregex' % key
value = r'.*?%s.*?$' % re.escape(value)
dict = {key: value}

table.objects.all().filter(**dict)

此外,正如评论中所建议的,您的正则表达式似乎与contains查找没有什么不同,因此除非您有一些不同的正则表达式,否则您应该使用:

key = '%s__contains' % key
dict = {key: value}

table.objects.all().filter(**dict)

相关问题 更多 >