我有以下型号:Django的监护人许可 - 对于一个在一对多关系的对象设置权限
项目:
class Project(models.Model):
project_name = models.CharField(max_length=100, unique=True)
SearchCodes:
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 docs我可以在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中的项目相关的SearchCodes上设置权限?我不想在SearchCodes上设置对象级权限 - 这只是SearchCode的每个实例。相反,我需要能够在管理中设置:
您可以查看与此项目相关的每个SearchCode,而不是任何其他SearchCodes。
请让我知道如果我需要更具体 - 我试图尽可能通用。
谢谢 - 任何帮助或指针将不胜感激。
编辑:
我用Admin-Integration例如设置在Django守护项目对象级权限。
感觉就像在这个时候,当我在这个项目的Object-Permissions页面中时,必须有一些方法来设置与这个特定项目实例相关的所有SearchCodes的权限。
谢谢你的回应。这对设置权限后检查权限非常有用(+1) - 但我正在寻找关于如何在Django-Admin的SearchCodes上设置权限的指针/教程等。虽然我猜我可能可以使用这个概念,并在SearchCode层面推出我自己的权限 - 我宁愿在管理员中做 - 为了用户的缘故和一致性:) – beginAgain