【Django-报错处理】TypeError: ‘Pointer‘ object is not subscriptable
  TEZNKK3IfmPf 2023年11月12日 17 0

在django中引入xadmin后出现数十个报错信息,通过这篇博客:django安装xadmin及问题处理即可解决绝大部分问题,但本文题目中标注的问题无法解决。

1 报错分析

报错信息为:

······
  File "D:\PythonWork\CourseWeb\xadmin\views\edit.py", line 220, in get_form_layout
    rendered_fields = [i[1] for i in layout.get_field_names()]
  File "D:\PythonWork\CourseWeb\xadmin\views\edit.py", line 220, in <listcomp>
    rendered_fields = [i[1] for i in layout.get_field_names()]
TypeError: 'Pointer' object is not subscriptable
[11/Jun/2023 21:53:56] "GET /xadmin/users/userprofile/1/update/ HTTP/1.1" 500 186820

点击报错信息,转到报错位置,内容如下:

layout = Layout(Container(*fs))
            if layout.get_field_names():
                rendered_fields = [i[1] for i in layout.get_field_names()]
            else:
                rendered_fields = []

其中i[1]报错,原因是ipointer对象,不能使用下标[1]控制。
我们输出pointer对象:

[Pointer(positions=[0, 0, 0, 0], name='username'), 
 Pointer(positions=[0, 0, 0, 1], name='password'), 
 Pointer(positions=[0, 0, 1, 0, 0, 0], name='first_name'), 
 Pointer(positions=[0, 0, 1, 0, 1, 0], name='last_name'), 
 Pointer(positions=[0, 0, 1, 1], name='email'), 
 Pointer(positions=[0, 0, 2, 0], name='groups'), 
 ......]

即可发现,i[1]实际上想表达的是i.name,所以我们将i[1]改为i.name即可。

2 解决方案

layout = Layout(Container(*fs))
            if layout.get_field_names():
                rendered_fields = [i[1] for i in layout.get_field_names()]
            else:
                rendered_fields = []

改为:

layout = Layout(Container(*fs))
            if layout.get_field_names():
                rendered_fields = [i.name for i in layout.get_field_names()]
            else:
                rendered_fields = []

至此,问题解决。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   37   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   27   0   0 python
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
TEZNKK3IfmPf