微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django admin inline - 根据用户和对象显示不同的只读字段

如何解决Django admin inline - 根据用户和对象显示不同的只读字段

Django 2.2.24。

我有一个内联,我想根据用户组和模型上的一个字段显示不同的只读字段。我尝试采用我在模型管理页面上使用的简单方法

class MyObjectInline(admin.StackedInline):
    ...
    def get_readonly_fields(self,request,obj=None):
        fields = super(self.__class__,self).get_readonly_fields(request,obj)
        if obj:
            if request.user.groups.filter(name=SPECIAL_GROUP).exists():
                if obj.tag == SPECIAL_TAG:
                    fields += (...)
                else:
                    fields += (...)
        return fields

这在众所周知的问题(错误?)中不起作用,即内联中的对象是整个管理页面的父对象,而不是内联中实际表示的对象。

在研究变通方法时,似乎内联需要自定义表单,然后需要模型上每个字段的 __init__clean 例程的组合?但我还需要将 request 对象传递到表单中,哪个研究建议合并 FormSet 和/或 FormFactory

随着复杂性的增加,任何有关实现这一目标的正确方法的建议将不胜感激!谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。