Календарь для Django DateField, который показывает только месяцы и годы?

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

Подобный вопрос был задан, но не ответил, здесь.

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 для выбора месяца года, то здесь есть это (см. Пример "Выбор месяца" на этой странице). Можно добавить javascript на страницу администрирования в Django и использовать его, но вам, как сказано в моем предыдущем редактировании, придется выбрать день, с которым нужно иметь дело.

Другие вопросы по тегам