Исключение AttributeError: Сериализатор не имеет запроса атрибута в 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'. И это происходит в упомянутой строке. Я хочу получить доступ к текущему пользователю в функции validate. Как я могу это сделать?
Если запрос предоставляется в контексте, что делает, например, 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