Календарь для Django DateField, который показывает только месяцы и годы? - PullRequest
4 голосов
/ 01 февраля 2010

В админ-панели django у меня в настоящее время есть DateField, показывающий хороший календарь Javascript для ввода дат. Однако меня интересуют только месяц и год. Поэтому мне было интересно, можно ли в календаре показывать только месяцы и год. (Дополнительные очки брауни, если вы можете ограничить его использование, чтобы в будущем нельзя было вводить даты.)

Похожий вопрос был задан, но не получен, здесь .

1 Ответ

6 голосов
/ 01 февраля 2010

Самое простое (самое правильное, так как вам важны только месяц и год), нужно разбить поле модели на два поля: месяц и год. И сохраните это вместо этого.

Таким образом, вместо:

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 и использовать его, но вам, как было сказано в моем предыдущем редактировании, придется выбрать день, с которым нужно иметь дело.

...