Собираете дополнительную информацию на странице администрирования Django? - PullRequest
1 голос
/ 21 мая 2009

при сохранении, если пользователь выбирает определенную опцию, я хочу перевести пользователя на страницу, где он может заполнить еще одно поле, а затем перенаправить на страницу администратора по умолчанию

1 Ответ

1 голос
/ 21 мая 2009

Вместо перенаправления на новую страницу вы можете просто переопределить форму , которую используют страницы создания и обновления. Это позволяет добавлять дополнительные поля в форму модели, сохраняя всю обработку формы в одном месте.

Сначала вам нужно настроить 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.

...