仅显示月份和年份的 Django DateField 日历?

Posted

技术标签:

【中文标题】仅显示月份和年份的 Django DateField 日历?【英文标题】:A calender for Django DateField that only shows months and years? 【发布时间】:2011-01-11 19:50:31 【问题描述】:

在 django 管理面板中,我目前有一个 DateField,它显示了一个不错的 javascript 日历,用于输入日期。但是,我只对月份和年份感兴趣。所以我想知道是否可以让日历只显示月份和年份。 (如果您可以限制其使用,则额外的布朗尼积分,以便无法输入未来的日期。)

有人问过类似的问题,但没有回答,here。

【问题讨论】:

【参考方案1】:

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

所以不要有:

class Blah(models.Model):
    ...
    your_date = models.DateField()

你会:

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

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

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

第二次编辑: 至于选择一年中一个月的 javascript,there is this(请参阅该页面中的“月份选择日历”示例)。 It is possible to add javascript to an admin page in Django 并使用它,但你会 - 正如我在之前的编辑中所说 - 必须选择一天来处理。

【讨论】:

以上是关于仅显示月份和年份的 Django DateField 日历?的主要内容,如果未能解决你的问题,请参考以下文章

EXTJS 5 - 仅日期选择器年份和月份

如何仅在月份、日期和年份中更改我的日期选择器显示

如何仅显示月份和年份字段的 android 日期选择器?

想要在 Windows 应用程序中将自定义的 Datetimepicker 显示为“仅月份和年份”(使用 C#)

只有月份和年份的 Django DateField

如何将 jQuery 日期选择器转换为仅选择月份和年份?