使用非相关模型的Django管理自定义

使用非相关模型的Django管理自定义,django,Django,我是一个django noob,我正试图找出如何让管理模块做一些与单个模型上的正常操作稍有不同的事情。本质上,我需要的是运行一个查询并将查询结果显示为视图页面,然后允许指向编辑页面的链接将用户带到现有模型的编辑视图。我的查询中的3个表中有2个是相关的,但不是全部3个 例如: select a.foo, a.second_field, b.bar, c.unrelated_field from a, b, c where a.primary_key = b.foreign_key and a.so

我是一个django noob,我正试图找出如何让管理模块做一些与单个模型上的正常操作稍有不同的事情。本质上,我需要的是运行一个查询并将查询结果显示为视图页面,然后允许指向编辑页面的链接将用户带到现有模型的编辑视图。我的查询中的3个表中有2个是相关的,但不是全部3个

例如:

select a.foo, a.second_field, b.bar, c.unrelated_field
from a, b, c
where a.primary_key = b.foreign_key
and a.some_value = c.some_value 
请注意,a和c未定义为相关表

我希望有一个该查询输出的视图,并在选中时有一个指向b模型整体编辑视图的链接

我已经在DB中为这个查询创建了一个视图,并简单地创建了一个新的模型,它可以很容易地获取视图,但我不确定这是否是一个正确的方法开始…但是从那里我似乎不知道如何创建这个链接到B表的编辑页面

任何关于如何最好地与django管理员完成类似任务的建议都将不胜感激

顺便说一下,使用Django 1.3.1


干杯

您可以在您的
ModelAdmin
中覆盖
change\u视图
,这样它将构建一个包含所有所需数据的dict列表。然后覆盖
change\u list.html
模板以正确显示此数据,并将其与
change\u表单
视图链接以获得正确的模型。因此,它将完美地集成到Django的管理站点中


我不喜欢DB视图,只要没有它就可以解决问题。如果数据可以在Python中构建,而没有巨大的性能差距和大量神奇的代码,那么它应该在Python中处理。

您可以覆盖
ModelAdmin
中的
change\u视图,因此它将构建一个包含所有所需数据的DICT列表。然后覆盖
change\u list.html
模板以正确显示此数据,并将其与
change\u表单
视图链接以获得正确的模型。因此,它将完美地集成到Django的管理站点中


我不喜欢DB视图,只要没有它就可以解决问题。如果数据可以在Python中构建,而没有巨大的性能差距和大量神奇的代码,那么它应该在Python中处理。

感谢您的响应。我正在尝试这个。有两件事……1)当你说构建一个dict列表时,你的意思是把它添加到额外的上下文中吗?我不是100%清楚这些东西去哪里了。此外,我认为我可能仍然需要该视图,因为我希望它与特定模型的标准模型视图分开。虽然我正在尝试添加一个按钮或一些东西来触发我的自定义视图(你认为应该尽量避免视图),但我错了,方法是
changelist\u视图
。通常它用于显示项目,但只要模板知道如何使用它,您可以向模板发送任何其他变量。感谢您的回复。我正在尝试这个。有两件事……1)当你说构建一个dict列表时,你的意思是把它添加到额外的上下文中吗?我不是100%清楚这些东西去哪里了。此外,我认为我可能仍然需要该视图,因为我希望它与特定模型的标准模型视图分开。虽然我正在尝试添加一个按钮或一些东西来触发我的自定义视图(你认为应该尽量避免视图),但我错了,方法是
changelist\u视图
。通常它用于显示项目,但只要模板知道如何使用它,就可以向模板发送任何其他变量。