python - 测试值“本地”时,Django QuerySet 查找失败
问题描述
我有一个返回用户定义标签列表的 QuerySet。在某些情况下,我想排除任何以“本地”一词开头的标签,但这似乎给我带来了问题。
当我测试其他值(如下面的 HVAC)时,以下示例有效:
queryset = queryset.exclude(tags__tag__tag_name__icontains = 'HVAC')
queryset = queryset.exclude(tags__tag__tag_name__istartswith = 'HVAC')
但是当我尝试对“Local”进行相同操作时,它会排除所有内容,而不仅仅是包含或以“Local”一词开头的值。下面的两个示例都排除了所有内容:
queryset = queryset.exclude(tags__tag__tag_name__icontains = 'Local')
queryset = queryset.exclude(tags__tag__tag_name__istartswith = 'Local')
作为附加说明,以下内容确实有效,但它仅排除了该确切值,我无法预测/列出所有以“Local”开头的值:
queryset = queryset.exclude(tags__tag__tag_name = 'Local 123')
我最好的猜测是“Local”是python中的保留字?关于解决这个问题的任何想法,或者我还缺少什么?
解决方案
我不知道这是否是处理这个问题的正确方法,但由于每个@WillemVanOnsem 似乎我排除了所有至少有一个带有“Local”标签的模型对象(同时使用排除和据我所知过滤器),相反,我最终创建了一个包含所有不包含“Local”的值的新列表,并返回该列表而不是原始查询集。
newQueryset = list()
for item in list(queryset):
if not 'local' in str(item['tags__tag__tag_name']).lower():
newQueryset.append(item)
return newQueryset
推荐阅读
- r - 更改特定数据点的 ggplot 条形图中的文本标签颜色
- c++ - 计算数组中的总项目的问题
- linux - cmp 命令是否不对字节使用 ASCII 编码?
- python - 为什么 PyTorch 自定义模块中需要超级构造函数?
- docker - 本地容器以正确的图像内容类型响应,但一旦托管在 gcloud 上,相同的容器会返回 html 内容类型
- javascript - 一个 JQuery 点击事件触发,一个不触发
- android - 当参数具有默认值时,为什么我不能使用导航组件将参数传递给片段?
- java - mvn spring-boot:run vs java -jar xxx.jar 性能差异
- c# - 统一 C#;为什么我的游戏保存在不同的状态后加载默认状态?
- mysql - MySQL 通过非主索引列更新数据需要对无关记录进行主索引锁