请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

xadmin update页面报错,查询不到object

我在项目中使用xadmin,点击某一条数据无法进入编辑页面,报pk找不到。经查看xadmin源码发现,我的数据pk形如“UP2662-CUSA08481_00-RECROOM000000001”,但是在调试时被转换成了“UP2662-CUSA08481-RECROOM000000001”,丢失了“_00”,调试器中有乱码,所以查不到数据。但使用django自带的filter可以查到的。怀疑是编码问题导致的,老师知道大概问题所在吗?(get_object 方法不知道在哪里调进来的,可能在前面某步骤中,xadmin做了什么编码转换?)我的python版本是3.8,django是最新的3.0。

另外还有一个问题,xadmin现在已经不支持django3了,我用的是开源社区适配的版本。那么是否有更好的适合django3用的admin工具?
图片描述图片描述

正在回答 回答被采纳积分+3

2回答

提问者 疯猫 2020-08-03 10:58:26

https://img1.sycdn.imooc.com//szimg/5f277d44096f20b418481274.jpg

在xadmin的UpdateAdminView 类的init_request 中,传入的object_id是正常的,但是到上面问题中的截图方法,就不正常了,应该是xadmin在中间做了什么事情导致。

0 回复 有任何疑惑可以回复我~
bobby 2020-08-03 10:22:55

这个问题已经不大,至于这里查询出来为什么少了一部分,你有没有检查过数据库看看数据库中是否完整? 如果数据库完整的话 你有没有看看是不是model中对应的列的长度错误 导致被截断了?

0 回复 有任何疑惑可以回复我~
  • 提问者 疯猫 #1
    绝对不是截断,数据库是正常的,直接写接口用model查pk也是正常的,只有xadmin的get_object这个方法有问题。而且你看截图调试信息,objec_id中间有部分是个乱码,这个乱码的位置在数据库中是"_00"
    回复 有任何疑惑可以回复我~ 2020-08-03 10:40:43
  • 提问者 疯猫 #2
    在xadmin的UpdateAdminView 类的init_request 中,传入的object_id是正常的,但是到上面问题中的截图方法,就不正常了,应该是xadmin在中间做了什么事情导致。
    回复 有任何疑惑可以回复我~ 2020-08-03 10:56:26
  • 提问者 疯猫 #3
    调试了发现,是xadmin的util中的unquote()做了处理,把字符串改了
    回复 有任何疑惑可以回复我~ 2020-08-03 16:51:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信