我正在尝试在视图中获取for循环中的数据。这是我的代码:
def func(request):
list = UserBookmark.objects.values('bookmark').filter(tag = "a")
print list
for i in list:
print i
tag_ids = UserBookmark.objects.values('tag').filter(bookmark = i)
print tag_ids
return render(request,'index.html')
当我打印i时,我得到了i的值。此外,我有记录,其中bookmark = i 打印我给出这样的值:
{u'bookmark': u'https://classroom.udacity.com/courses/cs101/lessons/48753036/concepts/487183640923'}
当我在shell中运行此查询时:
tag_ids = UserBookmark.objects.values('tag')。filter(bookmark ='https://classroom.udacity.com/courses/cs101/lessons/48753036/concepts/487183640923')
我也获得了tag_ids的价值
但我在for循环中设置了一个空的查询。这看起来像是一些愚蠢的错误,但我无法弄明白。
答案 0 :(得分:0)
查询集上的.values()
方法提供了类似字典的对象列表。迭代此列表将返回单个词典。因此,您试图在forloop内部匹配整个字典。它等同于
queryset.filter(
bookmark={u'bookmark': u'http://www.example.com'}
)
更新:关于能够使用.values()
我错了。这是一个词典列表,而不是单独的词典。
而是尝试:
for i in list:
tag_ids = UserBookmark.objects.values('tag').filter(bookmark=i['bookmark'])