分页不接受dict作为不可损坏类型的数据

2024-09-30 02:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Django分页Pagination Docs。但我收到了这个错误:

TypeError at /
unhashable type

这基本上是因为我使用的是字典而不是查询集。 我想知道是否有办法把我的字典变成散列对象。在

这是我的口述模板:

^{pr2}$

这是我的观点:

def home(request):
    if request.user.is_authenticated():
        print "login"
        user = request.user
        prods = Product.objects.all()

        i = 0
        print 'numero de produtos ' + str(len(prods))
        prodmatrix = {}
        for prod in prods:
            #                       0             1           2    3
            prodmatrix[str(i)] = [[prod.name], [prod.image], [], [prod.slug]] 
            reviews = Review.objects.filter(product=prod.id) #   ^ this is for tags
            print str(len(reviews))
            if len(reviews) != 0: 
                for review in reviews:
                    rev_alltags = review.tag.all()
                    for tags in rev_alltags[:3]:     #                           
                        print tags.name
                        prodmatrix[str(i)][2].append(tags.name) # append only tags 
            print str(i)
            i = i + 1
        paginator = Paginator(prodmatrix, 2)
        page = request.GET.get('page')
        try:
            prodmatrix2 = paginator.page(page)
        except PageNotAnInteger:
            prodmatrix2 = paginator.page(1)
        except EmptyPage:
            prodmatrix2 = paginator.page(paginator.num_page)
        return render(request, 'home.html',{'prodmatrix2':prodmatrix})

Tags: inforlenrequesttagspageprodpaginator
1条回答
网友
1楼 · 发布于 2024-09-30 02:27:27

使用tuple代替dict,如下所示:

# convert `dict` to `tuple`:
prodmatrix = tuple(prodmatrix)
paginator = Paginator(prodmatrix, 2)
# or this
paginator = Paginator(prodmatrix.items(), 2)

page = request.GET.get('page')
try:
    prodmatrix2 = paginator.page(page)
except PageNotAnInteger:
    prodmatrix2 = paginator.page(1)
except EmptyPage:
    prodmatrix2 = paginator.page(paginator.num_page)
return render(request, 'home.html',{'prodmatrix2':prodmatrix})

在模板中,需要通过元组的索引调用attrs和方法(key=0,value=1)

相关问题 更多 >

    热门问题