Django内联用户权限+仅查看 - 权限问题

Val*_*ali 9 python django permissions inlines

我不确定这是不是一个错误,或者我只是遗漏了一些东西(尽管我已经解析了有关内联的文档),但是:

假设我有一个模型A.模型A是模型B的内联.用户U可以完全访问模型B,但只更改模型A的权限(因此,不添加,也不删除).

但是,在编辑模型B时,用户U仍然可以在底部看到"添加另一个A"链接,尽管U没有为该模型添加权限.

怎么了?为什么这个链接会继续显示?我的逻辑说如果U没有添加A的权限,则该链接不应再出现.

另外,理想情况下,我想给U只有模型A的查看权限(所以没有添加,删除或更改 - 只有视图),但我已经读过(奇怪,如果你问我)哲学根据哪个"如果你不相信你,只是拒绝他一起访问管理区域".有点愚蠢的教义.

现在,我试图模拟这个'仅查看权限',只留下U只有更改权限,并将所有字段设置为只读.但我认为这是一种愚蠢的方法,也可能导致上面的权限问题......

像我这样的普通Django程序员如何实现仅查看权限,最重要的是我应该如何摆脱管理编辑表单底部的"添加另一个"链接?

提前致谢!

Mik*_*one 2

如果我想要管理员中内容的只读版本,我只需编写一些普通的 Django 视图并将它们排除在管理员之外。

我认为管理员并不真正支持您所谈论的那种事情(允许更改对象但不允许更改其内联)。不要误会我的意思:管理员非常灵活且有用,但它并不打算为您做所有事情。

我认为您能够在管理中拥有如此多的控制权的唯一方法是不内联 A。

“如果你不信任你,就拒绝他访问管理区域”。有点愚蠢的教义。

事实并非如此,当您考虑到管理员并不打算拥有所需的安全强化级别来保证细粒度的访问控制级别时。由于其开放性和可扩展性,管理中有很多很多地方可能潜伏着错误(通常在用户编写的代码中),这些错误可能会被不良行为者利用。这就是为什么不受信任的用户应该始终看到所有管理 URL 返回 404。

无论如何,当访问控制要求如此细粒度时,通用(即django.contrib)解决方案不太可能适合。