我有以下型号:
项目:
class Project(models.Model):
project_name = models.CharField(max_length=100, unique=True)
搜索代码:
class SearchCode(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
search_code = models.CharField(max_length=3)
search_code_modifier = models.CharField(max_length=1)
class Meta:
unique_together = ('project', 'search_code', 'search_code_modifier',)
从Django-Guardian 文档中,我可以在 Django 管理员中设置权限。然后对于一个项目,我可以在如下视图中检查/限制用户:
def project_edit(request, pk_project):
project = get_object_or_404(Project, pk=pk_project)
project_name = project.project_name
user = request.user
# Check user permission at the object level by passing in this specific project
if user.has_perm('myApp.change_project', project):
...do something
现在这是我卡住的地方。如何在 Django-Admin 中设置与项目相关的任何 SearchCode 的权限?我不想在 SearchCodes 上设置对象级权限——这只是 SearchCode 的每个实例。相反,我需要能够在管理员中设置:
您可以查看与此项目相关的每个 SearchCode,但不能查看任何其他 SearchCode。
如果我需要更具体,请告诉我 - 我已尝试使其尽可能通用。
谢谢 - 任何帮助或指示将不胜感激。
编辑:
我使用Admin-Integration示例在 Django-Guardian 中设置项目对象级权限。
感觉在这一点上,当我在此项目的对象权限页面中时,必须有某种方法来设置与此特定项目实例相关的所有 SearchCode 的权限。