Django - Как предварительно заполнить администраторские поля формы

Переместите \Illuminate\Session\Middleware\StartSession::class в глобальный массив $middleware в App/Http/Kernel.php.

24
задан Community 12 November 2015 в 17:58
поделиться

5 ответов

Я знаю, что вы можете предварительно заполнить некоторые значения с помощью GET, это будет примерно так

http://localhost:8000/admin/app/model/add/?model_field=hello

У меня возникли некоторые проблемы с полями даты, но, возможно, это могло бы помочь вам.

32
ответ дан sacabuche 28 November 2019 в 22:25
поделиться

Встроенная в Django функция prepopulated_fields жестко запрограммирована, чтобы ее нельзя было использовать для более общих целей.

Вам нужно написать свою собственную функцию Javascript, чтобы выполнить предварительное заполнение. Лучший способ включить его в страницу администратора - включить его во внутренний класс Media пользовательской формы или Widget . Затем вам нужно будет настроить свой подкласс ModelAdmin для использования пользовательской формы или виджета. Наконец, вам нужно будет визуализировать некоторый встроенный Javascript вместе с каждым предварительно заполненным полем, чтобы зарегистрировать обработчик onchange и сообщить ему, из какого другого поля нужно заполнить; Я хотел бы сделать это через пользовательский виджет. Чтобы сделать его красивым и декларативным, вы можете использовать пользовательский атрибут ModelAdmin (похожий на prepopulated_fields) и переопределить ModelAdmin.formfield_for_dbfield, чтобы создать виджет и передать информацию о том, из какого поля он должен предварительно заполняться.

Этот вид взлома администратором почти всегда возможен, но (как вы можете судить из этого замысловатого резюме) редко бывает простым, особенно если вы стараетесь, чтобы ваш код был хорошо инкапсулирован.

13
ответ дан Carl Meyer 28 November 2019 в 22:25
поделиться

Вы можете переопределить стандартное поле администратора django, заменив его полем формы по вашему выбору.

Отметьте это: Добавьте пользовательскую проверку для администратора

3
ответ дан Andrea Di Persio 28 November 2019 в 22:25
поделиться

я также хотел бы иметь текстовое поле, которое автоматически запускается с чего-то как "Привет, мое имя является автором".

Выезд документы в: http://docs.djangoproject.com/en/dev/ref/models/fields/#default

Вы могли иметь CharField () или TextField () в Вашей модели и установить эту опцию, которая установит текст по умолчанию. 'значение по умолчанию' может также быть вызываемой функцией.

Что-то как: модели. CharField (max_length=250, значение по умолчанию = "текст По умолчанию")

3
ответ дан anonymous coward 28 November 2019 в 22:25
поделиться

Работа с слагом осуществляется с помощью javascript.

Таким образом, вы должны переопределить шаблоны в админке, а затем заполнить поля javascript. Дата должна быть тривиальной, но я не знаю, как вы должны получить имя зарегистрированного пользователя для сценария (не то, чтобы я очень усердно думал, но вы понимаете, что это дрейф :)).

2
ответ дан Mr Shark 28 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: