如何查找字符串是否在Django中设置的查询结果中

时间:2018-11-10 01:41:57

标签: django

我对模型设置的查询具有以下对象结果:

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语句尚未执行。

有什么帮助或建议吗?

1 个答案:

答案 0 :(得分:2)

我认为您可能需要对此进行索引。值列表实际上看起来像是它返回一个列表。您可以尝试:

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。发布您的相应模型将很有帮助。