【发布时间】:2020-07-01 14:55:57
【问题描述】:
我有两个 Django Models 的形式:
from django.db import models
class Car(models.Model):
pass
class Wheel(models.Model):
car = models.ForeignKey(Car, related_name='wheels', on_delete=models.CASCADE)
我正在使用django-guardian 来强制执行对象级权限。实际应用中有大量嵌套对象,发现为每个嵌套对象创建所有权限对象的写入性能非常慢。因此,Users 被授予顶级对象的权限(在此玩具示例中为 Car)。
在访问 Wheel 的 REST 端点上,通过向上移动外键(在本例中为 Wheel.car)来检查 Django REST Framework 权限,以验证 User 是否应该有权访问特定的 Wheel。
如何使用get_objects_for_user 来获取User 对其父Car 具有适当权限的所有Wheels?
专门尝试覆盖django-rest-framework-guardian 的ObjectPermissionsFilter.filter_queryset 以支持根据ForeignKeys 之一的权限过滤对象。
【问题讨论】:
标签: python django django-rest-framework permissions django-guardian