我基于Django的应用维护有一个预订日历,使用两个类建模:Calendar
和CalendarDay
。 Calendar
是各种模型类的集合,其中包括CalendarDay
。 CalendarDay
是实际的“肉”,并保存预订信息。
在管理员应用程序中,我想将两个模型类一起显示为日历:连续x个月,每个月格式化为日历月(顶部的星期几和每周格式化的日期)
由于这超出了标准Django管理界面的功能,我正在研究使用最少的修改在Admin界面中实现此功能的可能性。到目前为止,我已经提出了以下方法:
使用Django Forms API创建自定义表单类。
以某种方式在管理员应用程序中注册自定义表单类。
创建自定义模板以将表单呈现为HTML。
以某种方式将自定义表单绑定到从管理应用程序中的列表显示中选择的Calendar
实例。我知道通过将数据字典传递给构造函数可以将表单绑定到数据但是我不知道如何使用管理表单执行此操作。
我的问题:这是一种可行的方法,如果是这样,我将如何进行[2]和[4]?
答案 0 :(得分:3)
实际上比我想象的容易得多。我最终实现了一个基于this post的自定义小部件以及HTMLCalendar的子类。
修改强> 虽然这个答案中描述的方法有效,但我对最终结果并不完全满意。它最终成为一个相当复杂的黑客。我按照我的问题中描述的原始思路重新设计了解决方案,这也很简单:
change_form.html
文件。HTMLCalendar
类子类化,因此它具有能力
处理CalendarDay
模型的Calendar
个对象
生成所需的CSS styles
以显示各种状态
日历中的每一天。在初始创建新Calendar
时,模板会向用户正常显示一条消息,表明还没有CalendarDay
个对象。
最终结果: