gpt4 book ai didi

python - 分页不接受字典作为数据 - 不可散列的类型

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:47 25 4
gpt4 key购买 nike

我正在尝试使用 Django 分页 Pagination Docs .但是我收到了这个错误:

TypeError at /
unhashable type

这基本上是因为我使用字典作为我的对象而不是查询集。我想知道是否有办法将我的字典变成可哈希对象。

这是我在模板中的字典:

{% for key, values in prodmatrix.items %}                                                                                                     <li class="span3">
<div class="product-box">
<span class="sale_tag"></span>
<p><a href="{% url 'product_detail' slug=values.3.0 %}"><img src="{{ STATIC_URL }}{{values.1.0}}" alt="" /></a></p>
<a href="{% url 'product_detail' slug=values.3.0 %}" class="title"><h4>{{ values.0.0 }}</h4></a><br/>
<p class="category"><a href="{% url 'product_detail' slug=values.3.0 %}">{{values.2.}} {{values.2.1}} {{values.2.2}}</a></p>
</div>
</li>
{% endfor %}

这是我的观点:

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})

最佳答案

使用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})

在你的模板中,你需要通过元组索引调用属性和方法(键=0,值=1)

关于python - 分页不接受字典作为数据 - 不可散列的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21870430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com