Django Rest Framework序列化权限

时间:2014-01-13 02:20:34

标签: django permissions django-rest-framework

我想序列化对象级权限 - 并向浏览器发送一个简单的TrueFalse - 因此我会触发"允许编辑"代码。

我这样做是因为用户没有向他们展示他们无法使用的功能。

有没有内置的方法来做到这一点?文档没有提到这一点。

我在序列化程序上尝试了以下内容:

has_permission = serializers.SerializerMethodField('check_permission')

def check_permission(self, obj):
    return self.check_object_permissions(self.request, obj)

但序列化程序没有方法check_object_permissions - 属于权限对象。

1 个答案:

答案 0 :(得分:1)

向模型添加方法以检查权限:

 class MyModel(models.Model):
     myfield = models.TextField(max_length=100)

     def check_permissions(self):
        # Perform your permissions functions
        if (.....):
           return True
        else: 
           return False

将自定义字段添加到您的Serializer中,如下所示:

  class MyModelSerializer(serializers.ModelSerializer):        
      has_permissions = serializers.BooleanField(source='check_permissions', read_only=True)
      class Meta:
         model = models.MyModel
         fields = ("myfield","has_permissions")