如何解决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 举报,一经查实,本站将立刻删除。