Django Date Field的日历只显示月份和年份?

时间:2010-02-01 17:19:08

标签: javascript django calendar django-admin datefield

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

提出了类似的问题,但没有回答,here

1 个答案:

答案 0 :(得分:5)

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

所以不要:

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并使用它,但你会 - 如我之前的编辑所说 - 必须选择一天来处理。