при сохранении, если пользователь выбирает определенный вариант я хочу принять пользователя на страницу, где он может иметь еще одно поле, чтобы быть заполнены, а затем перенаправить на страницу администратора по умолчаниюСобирать дополнительную информацию на странице администрирования Django?
0
A
ответ
0
Вместо того, чтобы перенаправлять на новую страницу, вы можете просто override the form что используются страницы создания и обновления. Это позволяет добавлять дополнительные поля в форму модели, сохраняя всю обработку формы в одном месте.
Сначала вам нужно настроить ModelAdmin использовать пользовательскую форму:
admin.py
from django.contrib import admin
from forms import BookAdminForm
from models import Book
class BookAdmin(admin.ModelAdmin):
form = BookAdminForm
admin.site.register(Book, BookAdmin)
forms.py
from django import forms
class BookAdminForm(forms.ModelForm):
additional_field = forms.CharField(max_length=100)
class Meta:
model = Book
Далее, вам понадобится override the save method, чтобы проверить, выбран ли «определенная опция», а затем обработать дополнительное поле ap propriately. Внутри вашего класса вам нужно что-то вроде этого:
def save(self, *args, **kwargs):
if self.cleaned_data['certain_field'].value == 'certain option':
# process additional_field
# don't forget to call super to save the rest of the form
super(BookAdminForm, self).save(*arg, **kwargs)
ПРИМЕЧАНИЕ: Этот код не тестировался, но он должен направить вас в правильном направлении.
Также возможно использовать метод override the save_model()
в ModelAdmin.
Возможно, лучше здесь переопределить метод save_model класса admin, а не form.save, поскольку вам может понадобиться сделать что-то вроде перенаправления пользователя. –
в этом я каждый раз показываю дополнительное поле. Но я хочу, когда есть определенное условие, только тогда оно отображается. Я использую javascript для этого, но хочу изменить. – ha22109
Затем вы выходите за рамки администратора django. Весь смысл администратора - мгновенно получить администратор функциональной модели прямо из коробки. Маршрут javascript не является плохим решением. – Soviut