2
我試圖使用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})
謝謝!我只是沒有得到如何在模板中更改代碼。我用模板中的字典代碼更新了我的問題。它會如何改變? –
'items()'是'dict'的一種方法,但不是'tuple'。您已經擁有'tuple'中的數據,並且不需要使用'items()'方法 {%for key,prodmatrix%中的值} {{values.0.0}} {{values.1.0}} {{values。 1.1}} {{values.1.2}} {%endfor%} – freylis
謝謝,但元組仍然不起作用。我試圖解析它的值爲0.0,但它返回''作爲結果 –