【发布时间】:2021-12-13 04:02:11
【问题描述】:
我正在为使用 Django REST 框架构建的 API 构建权限。假设我有以下模型:
from django.db import models
class Study(models.Model):
pass
class Result(models.Model):
study = models.ForeignKey(Study)
value = models.IntegerField(null=False)
我对这两个模型都有基本的序列化程序和视图。我将使用每个对象的权限来授予用户访问一项或多项研究的权限。我希望用户只能查看Results 以获得他们有权访问的Study。我可以想到两种方法来做到这一点,但似乎都不理想:
- 保持
Results 上的每个对象权限与Study同步。这只是一个非首发,因为我们希望Study始终是真相的来源。 - 编写一个自定义权限类,当用户尝试访问
Result时检查相关Study的权限。这实际上并不算太糟糕,但我找不到其他人这样做的例子,这让我觉得我可能在考虑这个根本错误。
是否有针对此问题的现有解决方案?或者自定义权限类是要走的路?如果是这样,您是否有其他实施这种方式的示例?
【问题讨论】:
-
querysetA = Study objects 允许用户(基本上是一个值列表,即 id);那么最终的queryset = Result.objects.filter(study__in = querysetA)
标签: django django-rest-framework