Django ModelForm с виджетами администратора - PullRequest
3 голосов
/ 20 января 2012

Я создал модели, а из моделей я создал ModelForms. Однако я заметил, что виджеты, созданные из ModelForm, не такие же, как виджеты, когда я нахожусь на страницах администратора.

Как я могу:

  1. Получить тот же виджет, что и на страницах администратора. Это потрясающе. Поле внешнего ключа имеет значок «плюс», который позволяет добавлять новый элемент, на который ссылаются.

  2. Виджет времени и даты имеет кнопку «Сейчас», которая позволяет мгновенно заполнить поле текущим временем.

  3. Есть ли еще какой-нибудь крутой плагин для виджетов? Пока что все, что я получил, это просто простой виджет HTML, который не имеет смысла даже для таких полей, как Datetime (он генерирует обычный простой элемент управления вводом).

1 Ответ

5 голосов
/ 20 января 2012

Вы должны взглянуть на django / contrib / admin / widgets.py. Вы найдете здесь виджеты для админки. Затем в форме создайте что-то вроде:

from django.contrib.admin.widgets import AdminDateWidget

class MyForm(ModelForm):

    class Meta:
        widgets = {
            'date': AdminDateWidget(),
        }

Убедитесь, что ваш шаблон содержит необходимые файлы мультимедиа (css, js)

Я также рекомендую взглянуть на django-floppyforms , что очень хорошая библиотека, если вам нужны лучшие виджеты

...