在任何视图中使用ModelAdmin表单

时间:2014-10-11 15:39:52

标签: django django-forms django-admin django-views

我花了很多时间为我的模型设置ModelAdmin,我希望能够基本上在我的网站上的其他地方重用它,即不仅仅是在管理页面中。

具体来说,我想进一步子类化我创建的ModelAdmin子类,并覆盖一些非特定于管理员的方法和属性,然后使用第二个子类从我的一个模型中创建一个表单普通(非管理员)视图。 但我不确定如何从ModelAdmin子类中获取表单或如何将其绑定到特定模型。

例如,我的admin.py看起来像这样:

from django.contrib import admin

class MyAdmin(admin.ModelAdmin):
    fields = ['my_custom_field']
    readonly_fields = ['my_custom_field']

    def my_custom_field(self, instance):
        return "This is my admin page."

这真的很棒。现在,我希望将其子类化为:

class MyNonAdmin(MyAdmin):
    def my_custom_field(self, instance):
        return "This is NOT my admin page!"

现在我想在视图函数中使用MyNonAdmin来生成绑定到特定模型的表单,并在模板中使用该表单。我只是不确定该怎么做。

更新

我找到了如何呈现表单,但它不包含任何readonly_fields。渲染表单如下所示:

def view_func(request, id):j
    res = get_object_or_404(ModelClass, pk=int(id))
    admin = MyNonAdmin(ModelClass, None)
    form = admin.get_form(request, res)

    return render(request, 'my_template.html', dict(
        form=form,
    ))

但正如我所说,它只呈现表单本身,而不是我真正关心的其他readonly_fields

0 个答案:

没有答案