Вместо перенаправления на новую страницу вы можете просто переопределить форму , которую используют страницы создания и обновления. Это позволяет добавлять дополнительные поля в форму модели, сохраняя всю обработку формы в одном месте.
Сначала вам нужно настроить 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
Далее вам необходимо переопределить метод сохранения , чтобы проверить, выбран ли «определенный параметр», и обработать дополнительное поле соответствующим образом. Внутри вашего класса вам понадобится что-то вроде этого:
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)
ПРИМЕЧАНИЕ. Этот код не проверен, но он должен указывать правильное направление.
Также возможно переопределить метод save_model()
в ModelAdmin.