在Django管理页面中收集其他信息?

时间:2009-05-21 06:26:40

标签: django django-admin django-forms django-urls

保存如果用户选择某个选项我想将用户带到一个页面,在那里他可以再填充一个字段,然后重定向到管理默认页面

1 个答案:

答案 0 :(得分:1)

您可以简单地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()方法。