定义一个自定义表单以在 Django 的 ModelAdmin 添加视图中使用
我正在尝试使用 ModelAdmin 类在管理中公开 Django 模型。 ModelAdmin 似乎假设您使用相同的表单进行添加和更改。我希望 add_view 使用简化的表单,仅列出少数必填字段。提交后,它将重定向到change_view并使用ModelForm的默认表单来渲染几乎所有字段。
做到这一点最简单的方法是什么?我检查了代码,但没有看到明确的方法。 ModelAdmin 倾向于在add_view 和change_view 中引用单个self.form 引用。我正在考虑重写 add_view(),但我不想重新实现所有代码。重写 get_form() 可能会更有效,但我不知道如何检测在 add_view 或 change_view 期间是否调用 get_form() 。
I'm trying to expose a Django model in admin using the ModelAdmin class. ModelAdmin seems to assume you use the same form for add and change. I'd like the add_view to use a simplified form that only lists a handful of required fields. After submission, it'll redirect to the change_view and use ModelForm's default form to render nearly all fields.
What's the easiest way to do this? I've inspected the code, but I don't see a clear way. ModelAdmin tends to refer to a single self.form reference in both the add_view and change_view. I'm thinking of overriding add_view(), but I don't want to reimplement all the code. It might be more efficient to override get_form(), but I don't see how to detect whether get_form() is being called during add_view or change_view.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
change_view
期间调用时,get_form()
会传递一个obj
参数。只需检测即可根据需要返回新的表单/调整参数。例如:
将强制表单在添加时仅显示“url”字段,否则显示其他所有内容。
get_form()
is passed anobj
parameter when called duringchange_view
. Simply detect that return the new form/tweak parameters as needed.For example:
Will force the form to only display the "url" field when adding and everything else otherwise.