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