如何使用Django Admin注册自定义表单

时间:2015-11-13 11:16:57

标签: python django django-forms django-admin

admin_forms.py 中,我编写了以下代码:

class AdminForm(forms.Form):
    category = forms.ModelChoiceField(queryset=Category.objects.all())
    question = forms.CharField(widget=forms.Textarea)
    q_active = forms.BooleanField(initial=True)
    option = forms.CharField()
    option_active = forms.BooleanField(initial=True)

我想让它在Django Admin中注册,所以在我的 admin.py 中,我写了

from api.admin_forms import AdminForm
class EntryAdmin(admin.ModelAdmin):
    add_form = AdminForm
    fieldsets = (
        ('Category', {
            'fields': 'category'}),
        ('Question', {'fields': ('question', 'q_active')}),
        ('Answer Option', {'fields': ('option', 'option_active')}),
        ('Selected Answer', {'fields': ('user_role', 'answer')}),
    )
admin.site.register(EntryAdmin)

当然,这不是我们如何使其发挥作用。请帮助!

1 个答案:

答案 0 :(得分:2)

您应该设置form而不是add_form

class EntryAdmin(admin.ModelAdmin):
    form = AdminForm
    ...

注册模型管理员时,必须提供模型作为第一个参数:

admin.site.register(Entry, EntryAdmin)

ModelAdmin没有属性add_form,因此设置它无效。 UserAdmin具有add_form属性,在添加新用户时使用。