Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 测试“值”时Django QuerySet查找失败;“本地”;_Python_Django_Django Queryset - Fatal编程技术网

Python 测试“值”时Django QuerySet查找失败;“本地”;

Python 测试“值”时Django QuerySet查找失败;“本地”;,python,django,django-queryset,Python,Django,Django Queryset,我有一个QuerySet,它返回用户定义的标记列表。在某些情况下,我想排除任何以“Local”开头的标签,但这似乎给我带来了问题 以下示例在测试其他值(如下面的HVAC)时有效: 但当我尝试用“Local”这个词时,它排除了所有内容,而不仅仅是包含或以“Local”开头的值。以下两个示例都排除了所有内容: queryset = queryset.exclude(tags__tag__tag_name__icontains = 'Local') queryset = queryset.exclud

我有一个QuerySet,它返回用户定义的标记列表。在某些情况下,我想排除任何以“Local”开头的标签,但这似乎给我带来了问题

以下示例在测试其他值(如下面的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\uu tag\uu tag\u name='Local 123')


我最好的猜测是,“Local”在python中是一个保留字?我不知道这是否是解决这个问题的正确方法,但由于per@WillemVanOnsem,我似乎排除了所有至少有一个带有“Local”标记的模型对象(当我使用exclude和filter时),相反,我创建了一个不包含“Local”的所有值的新列表,并返回该列表而不是原始queryset

newQueryset = list()

for item in list(queryset):
    if not 'local' in str(item['tags__tag__tag_name']).lower():
        newQueryset.append(item)

return newQueryset

如果你在Local上加一个空格,比如用
queryset=queryset.exclude(tags\uu tag\uu tag\u name\uu icontains='Local')
?@MattCremeens是的,我想这可能也有帮助,但这不会改变任何事情。
排除(…)
的工作原理不同于
过滤器(…)
。现在,您排除了所有至少有一个带有
'Local'
标记的模型对象。@WillemVanOnsem有趣,谢谢。看起来过滤器也在做同样的事情——这就是你的意思吗
queryset=queryset.filter(~Q(tags\uu tag\uu tag\u name\uu icontains='Local))
Yes,关键是存在量词的否定,是否定谓词的通用量词。
newQueryset = list()

for item in list(queryset):
    if not 'local' in str(item['tags__tag__tag_name']).lower():
        newQueryset.append(item)

return newQueryset