values_list queryset返回的列表不迭代

时间:2014-06-03 10:01:40

标签: django django-queryset

我做过类似的事情

def Categories(self):
    category_list = Category.objects.values_list("category", flat=True).filter(created_by=self.request.user)
    print(category_list)
    for categories in category_list:
        print(categories)

当我这样做时,第一个print语句打印出我的模型中的类别列表,但是当我尝试迭代它时,它只给出第一个值.. 就像第一次打印在shell [u'hi',u'ho',u'hell']上一样 但是当我迭代第二次打印时只给出'hi'。 我不知道发生了什么

1 个答案:

答案 0 :(得分:0)

values_list不会返回list,而是ValuesListQuerySet,这是一种迭代器,第一个print可能会移动它的指针或其他东西。

将其转换为list,它应该可以正常工作。

category_list = list(Category.objects.values_list("category", flat=True).filter(created_by=self.request.user))