How to register a Custom Form with Django Admin

10,495

You should set form instead of add_form.

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

When you register your model admin, you must provide the model as the first argument:

admin.site.register(Entry, EntryAdmin)

ModelAdmin does not have an attribute add_form, so setting it has no effect. The UserAdmin has an add_form attribute, which is used when adding new users.

Share:
10,495
abdullah
Author by

abdullah

Updated on June 09, 2022

Comments

  • abdullah
    abdullah almost 2 years

    In admin_forms.py I've written the following code:

    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)
    

    I want it get registered with Django Admin, so in my admin.py, I've written

    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)
    

    Definitely, this is not how we can make it work. help please!