django - django日历中无限重复的事件

标签 django django-models calendar django-admin

我正在 django 中开发一个日历应用程序,并希望支持在给定开始日期之后无限次重复的事件。我将存储“块事件”,其中每个块都包含有关某个事件(标题、描述...)的数据以及它重复的模式和“到期日期”。通过这种方式,我只为一组可能有数百个重复事件实例存储一条记录。如果我想创建一个“异常”,我可以围绕异常拆分此事件块,并将每个块链接到先前和 future 的块。

我的问题是我希望能够运行查询以获取给定时间段内的所有“逻辑事件”,就好像为每个重复实例插入了新事件记录一样。 本质上,我想向我的应用程序(和 django 的管理应用程序)显示每个事件的 django 模型,但在我的数据库中为每组事件存储一个不同的模型。 这可能吗,如果有的话……怎么办?或者是否有更好的方法来重复事件?

最佳答案

看看 django-schedule ,它已经为此实现了一个系统。他们使用 a Period class 知道如何在给定的时间范围内收集单个事件发生,因此他们可以支持无限重复。

如果您想在 Django 管理中为重复事件的每次出现显示真实的单个模型对象,那也是可能的,但是您必须放弃支持无限重复(您根本无法生成无限数量的模型对象) .我为一个项目实现了这一点:每个单独的 Occurrence 对象都有一个 Recurrence 模型的可选外键,该模型存储了关于重复的元数据(即“从这个日期开始每周一次”)。在 Recurrence 对象的 save() 方法中,我将删除或创建与新数据匹配所需的任何链接事件。

第一个解决方案是该问题的高级通用解决方案,但您可能需要自己做更多的 UI 工作,因为您无法将每个 Occurrence 都变成一个实际的模型实例。

关于django - django日历中无限重复的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209090/

相关文章:

python - 如何为 IntegerField 设置 NULL 而不是设置 0?

django - 如何在Django中使用ForeignKey初始化一个空对象?

Java 日历 - 设置自定义日期和时间

calendar - 如何使用webcal协议(protocol)

python - 在 django 中执行 "group by"但仍保留完整的对象

Django 测试 - 如何为特定应用程序使用不同的设置文件运行测试?

Django,向提交的模型表单添加排除的属性

mysql - 向 Django Viewflow 应用程序添加 Multi-Tenancy

Django 历史对象值

java - 在 Java 中将字符串转换为日历对象