分页不接受 dict 作为数据 - 不可哈希类型

2023-12-12

我正在尝试使用 Django 分页分页文档。但我收到此错误:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分页不接受 dict 作为数据 - 不可哈希类型 的相关文章

随机推荐

  • 使用列计数时避免将元素拆分为两列

    我正在尝试使用多列创建一组 但它将一个 Link4 分成两列 只需将鼠标悬停在 Link4 上即可 它的一些部分被分成第二列 有没有什么可能的方法来避免这种情况 div Nav height 100 important div Nav a
  • PROLOG 中的递归?

    鉴于以下 Prolog 事实 f a b f b c f c d f d e f e 我需要创建一个查询xyz a Y 这样我得到Y e d c b 因为 a 依赖于 b b 又依赖于 c 等等 我当前的查询是 xyz X Y f X P
  • 如何在 Java 对象列表中搜索

    我有一个对象列表 并且该列表非常大 对象是 class Sample String value1 String value2 String value3 String value4 String value5 现在我必须在列表中搜索对象的特
  • 动画(可能切换类)不起作用

    因此 我正在制作一个网站 其中有几个 div 当用户单击特定按钮或导航项时 这些 div 应该从右侧 左侧或顶部滑动 然而 这些都不起作用 当我单击应该使它们滑动的按钮时 所有 div 都不会滑动 我使用纯 JavaScript 来执行这些
  • BULK INSERT SQL SERVER 的乐趣 - 指定代码页的类型不匹配或无效字符

    我正在插入如下所示的数据 AA00000111 PSNH OT J SMITH 03 01 2011 10 11 1957 42 Male Hartford NH Lorazepam Benzodiazepines C AA00000151
  • JAR 文件中带有图像的 Java 工具提示

    我正在使用 JFreeChart 通过实现来自定义图表的工具提示XYToolTipGenerator界面 作为generateToolTip 方法应该返回一个字符串 这是我在工具提示中显示图像所做的操作 Override public St
  • 如何查看我正在使用哪个版本的 Swift?

    我刚刚在 Xcode 中创建了一个新的 Swift 项目 我想知道它使用的是哪个版本的 Swift 如何在 Xcode 或终端中查看我的项目中使用的 Swift 版本 我所做的是在终端中说 xcrun swift version Xcode
  • 如何使用Oracle全局临时表?

    我正在尝试使用 Oracle 全局临时表 而不在数据库中物理创建表 以下代码不起作用 有人可以解释一下使用全局临时表的正确方法吗 declare global temporary table my temp table column1 nu
  • 从时间跨度(例如“15 分钟”或“2 秒”)到“00:15:00”或“00:00:02”

    我正在搜索 R 函数的帮助 该函数可以将时间跨度 例如 15 分钟 或 1 小时 或 6 秒 或 1 天 转换为日期时间对象 如 00 15 00 或 01 00 00 或 00 00 06 或 1960 01 02 00 00 00 不确
  • 如何使用Java向mysql插入数据

    我正在尝试使用 Java 将数据插入 mysql 数据库 我正在使用以下代码从数据库中获取数据 并且工作正常 import java sql Connection import java sql DriverManager import j
  • 将双精度型格式化为小数点后两位

    我一直试图将打印出来的答案保留到小数点后两位 所有涉及的数学都必须保持两位小数的格式 我已经尝试了一些事情 但我不确定要改变什么才能使这项工作正常进行 double pdt1 239 99 double pdt1Total double p
  • 使用 Python subprocess.call() 启动 ncurses 进程

    我正在尝试致电 ct ng http crosstool ng org 来自 SCons SConstruct 脚本 所以基本上来自 Python 使用以下方法 ret subprocess call mnt build pw build
  • 文件处理 - 再次从头开始读取[重复]

    这个问题在这里已经有答案了 我需要创建一个对象数组来保存文件中的记录 我不知道数组的大小 为此 我必须首先找到文件中的行数 使用行数可以确定数组的大小 现在我需要从头开始再次读取文件 以将文件中的记录存储在数组对象中 这就是我正在挣扎的地方
  • 如何获取php中具有特定文件夹名称的所有子目录?

    我发现我可以在 php 中使用以下代码获取该文件夹的所有子目录 address new RecursiveIteratorIterator new RecursiveDirectoryIterator root RecursiveDirec
  • 如何避免依赖注入构造函数的疯狂?

    我发现我的构造函数开始看起来像这样 public MyClass Container con SomeClass1 obj1 SomeClass2 obj2 随着参数列表的不断增加 既然 Container 是我的依赖注入容器 为什么我不能
  • 我如何使用 AngularJS 和serializeJSON cfquery

    我想看看 AngularJS 带有 cf 后端 我有以下代码 它提取一个名为 getIndex 的常规 cfquery 该查询每行提取五行列 firstName lastName var theQuery
  • 如何存储 Android 对话框中的编辑文本数据?

    我已经设置了一个包含多个编辑文本的警报对话框 但我不确定如何存储在警报对话框中输入的值 通常我可以这样做 final EditText input new EditText this alert setView input Editable
  • 如何在Java中互相使用两个类的方法?

    我环顾四周 只找到了一个答案 至少对我来说还不够清楚 我正在使用 GUI 构建一个非常基本的聊天应用程序 并将 GUI 与连接部分分开 现在我需要从服务器类中的 GUI 调用一种方法 反之亦然 但我不太明白该怎么做 即使是 这个 部分代码如
  • Pyinstaller 和 PyQt5 macOS Mojave 兼容性问题

    我的应用程序是使用 Pyinstaller 创建的 在我从 High Sierra 升级到 Mojave 之前一直运行良好 为了演示这个问题 我创建了一个简单的应用程序 主窗口只有一个按钮 当您按下按钮时 其文本应更改为 请稍候 10 秒钟
  • 分页不接受 dict 作为数据 - 不可哈希类型

    我正在尝试使用 Django 分页分页文档 但我收到此错误 TypeError at unhashable type 这基本上是因为我使用字典作为对象而不是查询集 我想知道是否有办法将我的字典变成可哈希对象 这是我在模板中的字典 for k