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

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