【问题标题】:how to find if string is in a result of a query set in Django如何查找字符串是否在 Django 中的查询集的结果中
【发布时间】:2019-04-13 14:08:29
【问题描述】:

我在模型上设置的查询结果如下:

ddd = Post_Sub_Category.objects.filter(
    category_name__category_name__iexact=dd
).values_list('sub_category_name', flat=True)

我得到的查询集:

<QuerySet ['car', 'spare parts', 'truck', 'motor cycle']>

然后尝试:

print(ddd.values('sub_category_name'))

我得到了以下结果:

<QuerySet [
    <Post_Sub_Category: car>,
    <Post_Sub_Category: spare parts>,
    <Post_Sub_Category: truck>,
    <Post_Sub_Category: motor cycle>
]

如何仅访问值并将它们作为字符串列出:

['car','spare parts','truck','motor cycle'].

第一个查询集似乎给了我想要的东西。但是,当我使用以下 if 语句时。它没有执行:

if 'car' in ddd:
    #  do some thing 

如您所见,car 应该在列表中。所以,我不明白为什么没有执行 if 语句。

有什么帮助或建议吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    我认为您可能需要将其编入索引。值列表实际上看起来像它返回一个列表。你可以试试:

    try: 
        ddd = ddd[0]
    except IndexError: 
        # Catch index error
        pass 
    
    if 'car' in ddd:
        #  do some thing  
    

    如果这不起作用,请尝试将您的 QuerySetList 显式转换为常规 ole 列表,如 question 所示,如下所示:

    ddd = list(ddd)
    

    另外,我觉得这有点奇怪:category_name__category_name__iexact=dd。发布您的相应模型会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2014-10-07
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2014-12-13
    相关资源
    最近更新 更多