AttributeError异常:Serializer在DRF中没有属性请求



我在序列化器中编写了以下代码,用于验证数据:

class MySerializer(serializers.ModelSerializer):
class Meta:
model = models.MyClass
fields = "__all__"
def validate(self, data):
role = data["role"]
roles = models.Role.objects.filter(
-->(exception) organization=self.request.user.organization
)
if role not in roles:
raise serializers.ValidationError("Invlid role selected")
return data  

但是我得到以下异常:

'MySerializer'对象没有属性'request'。它就在前面提到的那条线上。我想在验证函数中访问当前用户。我该怎么做呢?

如果请求是在上下文中提供的,例如ModelViewSet就是这样做的,您可以使用以下命令访问它:

class MySerializer(serializers.ModelSerializer):
class Meta:
model = models.MyClass
fields = '__all__'
def validate(self, data):
role = data['role']
request =self.context['request']
roles = models.Role.objects.filter(
organization__user=request.user
).distinct()
if role not in roles:
raise serializers.ValidationError('Invalid role selected')
return data

最新更新