2009-05-21 34 views

回答

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) 

注:此代碼是未經測試,但它應該指向你在正確的方向。

也可以在ModelAdmin中使用override the save_model()方法。

+1

可能會更好地重寫管理類的save_model方法,而不是form.save,因爲您可能需要執行類似於重定向用戶的操作。 – 2009-05-21 08:17:29