DRF权限:相关模型上的has_object_permission

时间:2016-07-01 06:15:29

标签: django django-rest-framework

有没有办法,限制Django休息框架中相关对象的权限? 例如,我有用户拥有的票证模型实例:

class Ticket(models.Model):
    # other fields 
    state = FSMField(default=SOME_STATE)
    owner = models.ForeignKey(User, related_name="tickets", null=True)

    def allocate(self, by=None):
        # allocate the ticket here
        pass

我希望所有者只能访问allocate方法。 我应该使用has_object_permission但不知道如何为相关对象执行此操作的图。 此外,我可以将除state之外的所有字段标记为仅在序列化程序中读取。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于输出,您可以按照that post中的说明覆盖相关的字段/序列化程序get_queryset

对于输入,您应该在第二次验证过程中处理权限 - 即在序列化程序返回验证数据之后。如果需要,您需要使用错误数据引发ValidationError