簡體   English   中英

測試值“ Local”時,Django QuerySet查找失敗

[英]Django QuerySet Lookup Fails When Testing for Value “Local”

我有一個QuerySet,它返回用戶定義標簽的列表。 在某些情況下,我想排除任何以單詞“ Local”開頭的標簽,但這似乎給我帶來了麻煩。

當我測試其他值(例如下面的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')

我最好的猜測是“本地”是python中的保留字? 關於此問題的任何想法還是我還缺少其他東西?

我不知道這是否是解決此問題的正確方法,但是由於每個@WillemVanOnsem似乎排除了所有帶有至少一個帶有“ Local”標簽的模型對象(當同時使用exclude和過濾器),我最終創建了一個不包含“ Local”的所有值的新列表,並返回該列表而不是原始查詢集。

newQueryset = list()

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

return newQueryset

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM