【发布时间】:2010-10-27 20:34:35
【问题描述】:
如果用户选择某个选项,则保存时我想将用户带到一个页面,在该页面他可以再填写一个字段,然后重定向到管理员默认页面
【问题讨论】:
标签: django django-admin django-forms django-urls
如果用户选择某个选项,则保存时我想将用户带到一个页面,在该页面他可以再填写一个字段,然后重定向到管理员默认页面
【问题讨论】:
标签: django django-admin django-forms django-urls
您可以简单地使用创建和更新页面使用的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 检查是否选择了“某些选项”,然后适当地处理额外的字段。在你的班级里,你需要这样的东西:
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()方法。
【讨论】: