我有两个模型:Domain
和Record
。许多记录链接到域。域名和记录拥有其所有者。我想禁止用户在他们不拥有的域中创建记录。但是,如果其他人(例如超级用户)创建了记录并将所有者设置为该特定用户(即使他们不拥有域),他们也应该能够编辑记录。这应该适用于管理站点和API(rest_framework)
我的问题是 - 实现这一目标的最简单方法是什么?是否有一些django插件处理链接权限?我可以在这里使用模型验证器(如果是这样 - 如何区分是否创建了新对象)?
答案 0 :(得分:1)
这里的问题是Django Rest Framework和Django本身(通过admin)只在模型层面进行交互。为了实现您的目标,我将实施以下设计:
这样的设计将一些业务逻辑从控制器转移到数据模型 - 有一些关于这种方法的好处和缺陷的争论。但是带有下划线的约束(Django admin和API)是唯一可以放置它的常见位置。
这是你的目标吗?