我有一个对象,我想在管理员下使用而不是继承models.Model的模型.如果我让它继承models.Model,这个对象将在数据库中创建一个我不想要的表.我只希望这个对象留在内存中.
我从堆栈溢出的好人那里获得帮助的一个解决方案是创建管理视图,通过admin.py下的modelAdmin(admin.site.register())注册这些自定义视图,并将此类模型对象用作动态数据存储(在内存中).
由于这个类似对象的模型不继承自models.Model,admin.site.register()(在admin.py下)不接受它并显示'type'对象不可迭代"当我尝试访问它时出错浏览器.
我通过Django访问的遗留数据库有一个表列,它以下列字符串格式存储序列化数据:
a:5:{i:1;s:4:"1869";i:2;s:4:"1859";i:3;s:4:"1715";i:4;s:1:"0";i:5;s:1:"0";}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用python/python-library将其更改为列表或任何其他友好的python数据类型,以进一步处理单个值?
注意:这些值是通过PHP写入数据库的.
我想创建一个不映射到数据库表的模型.而是作为python对象保留在内存中.
实际上,该模型应该表示来自许多其他表映射模型的标准化数据.
其他模型存储可在一天内多次编辑的数据.由于这些多次编辑,我不希望执行规范化/计算的表映射模型并将它们存储在数据库中,因为这些存储的数据可能会立即过时.
每次访问此规范化模型(通过管理员),我希望它从头开始对其他模型的数据执行规范化(这样它可以显示最新的数据),并且行为就像管理员下的正常模型一样比如显示列表视图和每行的详细视图.
按照Shintoist的回答编辑:
@Shintoist感谢清理事务并提供可用的方法.我刚刚实现了它,但最后还是打了一堵小墙:)
@skirmantas:是的,计算是在一个单独的对象中.此对象将传递到自定义视图中.
问题:一个问题是在admin.py下,我为这个对象创建了一个modeladminclass(它没有继承models.Model),所以我的自定义视图可以覆盖changelist视图和changeview.然后我使用admin.site.register()来注册这个类似模型的类和modeladmin.但是,由于此模型根本不是django模型(因为它是内存中的独立python对象),admin.site.register()会抛出"'type'对象不可迭代"错误.我不想使用url.py而不是admin.py,因为它意味着前端,而我试图覆盖后端管理员.