我对模型设置的查询具有以下对象结果:
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语句尚未执行。
有什么帮助或建议吗?
答案 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
。发布您的相应模型将很有帮助。