如何在Django日期字段中添加日历功能

4 投票
1 回答
15787 浏览
提问于 2025-04-16 20:19

我在Django里有一个日期时间字段

update_date     = models.DateField()

但是我想让日历弹出来。在文档里,他们说要写这个

class CalendarWidget(forms.TextInput):
    class Media:
        css = {
            'all': ('pretty.css',)
        }
        js = ('animations.js', 'actions.js')

现在我有几个问题:

  1. 这个类应该在哪里声明,怎么使用它
  2. 我没有pretty.css和animation.css,这些怎么弄到
  3. 我需要为此编程吗??

1 个回答

3

文件 'pretty.css'、'animations.js' 和 'actions.js' 并不是 Django 自带的,这段代码只是文档中的一个示例。你需要自己编写代码来实现更炫酷的组件——我个人比较喜欢 jQuery 的组件(可以参考下面的链接)。根据文档的说明:

选择哪个 JavaScript 工具包? 现在有很多 JavaScript 工具包,它们中有很多都包含可以用来增强你应用的组件(比如日历组件)。Django 特意没有推荐某一个 JavaScript 工具包。每个工具包都有自己的优缺点——你可以选择最适合你需求的工具包。Django 可以和任何 JavaScript 工具包进行整合。

假设你已经为你的炫酷组件定义好了所有的 css 和 js,在 ModelForm 中你需要像这样重写字段组件:

class SomeForm(forms.ModelForm):
    ...
    update_date = forms.CharField(widget=CalendarWidget)
    ...

别忘了在模板的头部显示 表单媒体

可以看看这些回答:

  1. 在 Django 中,最简单、最干净的日期选择器是什么?
  2. https://groups.google.com/group/django-users/browse_thread/thread/8bd4675ba642ebcb?pli=1

撰写回答