自定义Django管理界面功能
我刚接触Django,遇到了一些问题,想让管理后台按照我的想法来工作。我在想,是否应该创建一个自定义的管理应用,使用继承自admin/base_site.html的模板,并在前端登录时,如果用户是管理员(is_staff为真),进行重定向。
让我想到这个的初步原因有:
我有一系列的外键关系,想在父级管理页面上显示嵌套的内联内容。我尝试过使用easymode,但它有自己的一些问题和要求,可能会让我以后很头疼,我觉得不太需要这些麻烦。
我想添加一个功能,让管理员能够添加一个模型的实例,这样就会触发相关模型实例的创建和重定向等。这至少需要添加一些可调用的函数,但我还没弄明白怎么在管理模型中成功实现这些,现在看来在我自己应用的views.py中快速处理这些事情似乎更简单,而不是去折腾管理视图。
总的来说,创建一个自定义的管理应用(在前端登录时进行is_staff=true的重定向)在长远来看似乎更灵活,也能为客户提供一个更设计化和直观的管理界面。所以我想问问,半专业的人通常是怎么做的?(如果你能随心所欲地修改管理视图和模板,那你可不是半专业的哦 :))
感谢你能提供的任何建议,我还在摸索阶段,这种建议可能会帮我节省很多时间和精力。
2 个回答
也可以看看这篇文章里提到的链接,可能对你有帮助。
慢一点,放松点,遵循Django的理念。
你有一个“应用”。它用来展示数据。专注于如何展示这些数据。
你的“应用”自带一个默认的管理后台。它可以用来更新数据,而且已经准备好了。
如果这个管理后台不能满足你的需求,可以调整表单和模型,让它更接近你的想法。但别太纠结于管理后台,尽量做到最好就行,放轻松。
[另外,“更直观的管理后台”有时候并不准确。可能是这样,但我见过一些所谓“更直观”的,实际上并不是。]
为客户设计一个更好用、更直观的管理界面。
这算不算应用的一部分?这个应用除了展示数据,还有其他功能吗?
如果这个应用是处理事务的——比如添加、修改、删除——那就是你的应用。如果你想要一个华丽的用户界面,那就不再是管理后台了。没有重定向,那是你的应用。
这就是编程。别再纠结于管理后台,开始写你的应用吧。
提示:尽量多用通用视图。
除此之外,你讨论的是你的应用,而不是去改动已经能用的管理后台。
如果你能随心所欲地修改管理视图和模板,那你可不是半专业的水平。
错了。所有的源代码都在那儿,你也可以阅读。这就是专业人士的做法。我们会看源代码,而不是去改动管理后台。
如果你有复杂的事务处理,那你就有一个真正的、完整的应用。不是默认的管理后台,而是你应用的一部分,有表单的。
如果你有表单,那就说明你有表单。这并不需要去改动管理后台,只是多写一些你的应用代码而已。