4

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

在这里提出了类似的问题,但没有回答。

4

1 回答 1

6

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

因此,而不是:

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而言,有这个(请参阅该页面中的“月份选择日历”示例)。可以将 javascript 添加到 Django 中的管理页面并使用它,但您将 - 正如我之前的编辑中所说 - 必须选择一天来处理。

于 2010-02-01T17:37:16.127 回答