1

我基于 Django 的应用维护了一个预订日历,它使用两个类建模:CalendarCalendarDay. Calendar是各种模型类的集合,其中CalendarDay. CalendarDay是实际的“肉”并保存预订信息。

在管理应用程序中,我想将两个模型类一起显示为日历:连续 x 个月,每个月格式化为日历月(顶部的星期几和每周格式化的月份的日期)。

由于这超出了标准 Django 管理界面的功能,我正在研究使用最少修改在管理界面中实现此功能的可能性。到目前为止,我提出了以下方法:

  1. 使用Django Forms API创建自定义表单类。

  2. 以某种方式在管理应用程序中注册自定义表单类。

  3. 创建自定义模板以将表单呈现为 HTML。

  4. 以某种方式将自定义表单绑定到Calendar从管理应用程序的列表显示中选择的实例。我知道可以通过将数据字典传递给其构造函数来将表单绑定到数据,但是我不确定如何使用管理表单来执行此操作。

我的问题:这是一种可行的方法吗?如果是,我将如何处理 [2] 和 [4]?

4

1 回答 1

4

这实际上比我想象的要容易得多。我最终实现了基于这篇文章的自定义小部件以及 HTMLCalendar 的子类。

编辑: 尽管此答案中描述的方法有效,但我对最终结果并不完全满意。它最终成为一个相当复杂的黑客。我按照我的问题中描述的原始思路重新设计了解决方案,这也很容易:

  • 我按照这里change_form.html的描述移动了文件。
  • 我修改了该模板并添加了一个新块以包含能够呈现预订日历的模板。
  • 我对 Python 的HTMLCalendar类进行了子类化,以便它能够处理模型的CalendarDay对象Calendar并生成CSS styles在日历中显示每一天的各种状态所需的内容。

在初始创建新Calendar的 时,模板会优雅地向用户显示一条消息,表明还没有CalendarDay对象。

最终结果:

在此处输入图像描述

于 2012-12-25T09:03:27.373 回答