Django DateField的日历只显示数月和数年?

Bio*_*eek 4 javascript django calendar django-admin datefield

在django管理面板中,我目前有一个DateField显示一个很好的Javascript日历用于输入日期.但是,我只对月和年感兴趣.所以我想知道是否有可能让日历只显示月份和年份.(如果您可以限制其使用,以便将来不能输入任何日期,则额外的布朗尼点数.)

类似的问题有人问,但没有回答,在这里.

cet*_*eek 6

最简单的(也是最正确的,因为你只关心月份和年份)要做的事情是将模型字段分成两个字段:月份和年份.然后存储它.

所以不要:

class Blah(models.Model):
    ...
    your_date = models.DateField()
Run Code Online (Sandbox Code Playgroud)

你将会拥有:

class Blah(models.Model):
    MONTH_CHOICES=((1,"January"), (2,"February"), ...)
    ...
    your_year = models.IntegerField()
    your_month = models.IntegerField(choices=MONTH_CHOICES)
Run Code Online (Sandbox Code Playgroud)

您可以在方法中实现限制未来年份甚至未来月份(年/月组合)所需的任何逻辑clean().

编辑:我在上面的括号中说的最正确,因为你真的没有存储日期.您必须决定存储所选月份/年份的第一天,最后一天或某一天.

第二次编辑:对于选择一年中的一个月的javascript,有这个(参见该页面中的"月选日历"示例).可以将javascript添加到Django的管理页面并使用它,但是你会 - 如我之前的编辑中所述 - 必须选择一天来处理.