简体   繁体   English

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

[英]How to register a Custom Form with Django Admin

In admin_forms.py I've written the following code: 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)

I want it get registered with Django Admin, so in my admin.py , I've written 我想让它在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)

Definitely, this is not how we can make it work. 当然,这不是我们如何使其发挥作用。 help please! 请帮助!

You should set form instead of add_form . 您应该设置form而不是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. ModelAdmin没有属性add_form ,因此设置它没有任何效果。 The UserAdmin has an add_form attribute, which is used when adding new users. UserAdmin具有add_form属性,在添加新用户时使用该属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM