DatepickerWidget в CreateView
В моей модели у меня есть поле даты. Поэтому я хочу использовать Datepicker. Как использовать Django-Admin Datepicker?
Я нашел примеры, чтобы сделать это в форме, но я только определил модель. Можно ли определить этот виджет в моей модели?
3 ответа
Решение
Ты можешь использовать get_form
метод для переопределения атрибута виджета:
class MyCreateView(CreateView):
def get_form(self, form_class):
form = super(MyCreateView, self).get_form(form_class)
form.fields['date_field'].widget.attrs.update({'class': 'datepicker'})
return form
Вот полное современное решение, основанное на других ответах:
from django.views.generic import CreateView
from django.contrib.admin.widgets import AdminDateWidget
from .models import MyModel
class MyModelCreateView(CreateView):
template_name = 'form.html'
model = MyModel
fields = ['date_field', ...]
def get_form(self, form_class=None):
form = super(MyModelCreateView, self).get_form(form_class)
form.fields['date_field'].widget = AdminDateWidget(attrs={'type': 'date'})
return form
Я предлагаю вам создать модель формы, в этом файле формы импортировать виджет администратора DatePicker
from django.contrib.admin.widgets import AdminDateWidget
и определите виджеты для этого поля, используя attrs=AdminDateWidget
и в шаблоне положить {{ form.media }}, чтобы включить этот виджет JavaScript и CSS-файлы в HTML