我花了很多时间为我的模型设置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
。