Как ограничить выбор дат в календаре с админ панели для формы записи на консультацию?
Здравствуйте. Кто может, подскажите пожалуйста, на django делаю форму записи на консультацию. Дату выбирать для записи я могу, использую input time, но, к сожалению, не хватает знаний как реализовать так, чтобы из панели администрирования django я мог выбирать диапазоны дней или дни, которые пользователь не сможет выбирать. Быть может лучше использовать уже готовую библиотеку для этого, кто разбирается в этом, может подскажите в каком направлении копать, может кто такое уже реализовывал?
Дополнительно:
django-admin-date-hierarchy
Если один диапазон а так вообще скриптом сравнить дату с началом и концом диапазонов)
Ответы:
Вот пример с годом постройки, ввиду контекста приложения здесь models.IntegerField, но это по аналогии можно и для дат сообразить
from django.core.validators import MaxValueValidator, MinValueValidator class Unit(models.Model): """модель объекта недвижимости""" year_construction = models.IntegerField(verbose_name='Год постройки', choices=year_choices(),null=True, blank=True, validators=[MinValueValidator(1950), max_value_current_year]) def current_year(): return datetime.date.today().year def max_value_current_year(value): return MaxValueValidator(current_year())(value) def year_choices() -> List: return [(r,r) for r in range(1950, datetime.date.today().year+1)] |
from django.core.validators import MaxValueValidator, MinValueValidator class Unit(models.Model): """модель объекта недвижимости""" year_construction = models.IntegerField(verbose_name='Год постройки', choices=year_choices(),null=True, blank=True, validators=[MinValueValidator(1950), max_value_current_year]) def current_year(): return datetime.date.today().year def max_value_current_year(value): return MaxValueValidator(current_year())(value) def year_choices() -> List: return [(r,r) for r in range(1950, datetime.date.today().year+1)]
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для ограничения выбора дат в календаре с админ панели для формы записи на консультацию, можно использовать JavaScript и HTML. Вот пример решения данной проблемы:
1. Создайте поле ввода для даты в форме записи на консультацию:
```html
```
2. Добавьте скрипт JavaScript, который будет ограничивать выбор дат в календаре. В этом примере мы ограничим выбор дат только до конца текущего месяца:
```html
var consultationDateInput = document.getElementById('consultationDate');
var today = new Date();
var lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
consultationDateInput.setAttribute('max', lastDayOfMonth.toISOString().split('T')[0]);
```
Этот скрипт устанавливает максимальную дату выбора в поле ввода даты на последний день текущего месяца. Таким образом, пользователь не сможет выбрать дату после окончания текущего месяца.
3. Теперь при открытии календаря для выбора даты, пользователь увидит только доступные для выбора даты до конца текущего месяца.
Это простое и эффективное решение, которое позволит ограничить выбор дат в календаре с админ панели для формы записи на консультацию. Вы можете настроить ограничения выбора дат по своему усмотрению, изменив логику скрипта JavaScript в соответствии с вашими требованиями.