加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 定义一个自定义窗体,用于Django的ModelAdmin Add View

发布时间:2020-12-20 11:16:33 所属栏目:Python 来源:网络整理
导读:我正在尝试使用ModelAdmin类在管理中公开Django模型. ModelAdmin似乎假设您使用相同的表单进行添加和更改.我希望add_view使用只列出少数必填字段的简化表单.提交后,它将重定向到change_view并使用ModelForm的默认表单来渲染几乎所有字段. 最简单的方法是什么
我正在尝试使用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().

解决方法

在change_view期间调用时,get_form()传递一个obj参数.只需检测根据需要返回新表单/调整参数.

例如:

class MyModelAdmin(admin.ModelAdmin):
    def get_form(self,request,obj=None,**kwargs):
        # hide every other field apart from url
        # if we are adding
        if obj is None:
            kwargs['fields'] = ['url']
        return super(MyModelAdmin,self).get_form(request,obj,**kwargs)

将强制表单仅在添加时显示“url”字段,否则显示其他所有内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读