我有一个这样的自定义序列化器-

class customSerializers(serializers.Serializer):
    token = serializers.CharField(max_length=12)


我有一个这样的模型

class UserToken(models.Model):
    user = models.ForeignKey(User)
    token = models.CharField(max_length=12)


现在,我要验证我的customSerializers令牌字段。令牌值必须存在于UserToken模型中并且属于当前用户。

**我不想使用模型序列化器。

最佳答案

您应该将用户传递给序列化器,然后在现场进行验证:

class CustomSerializer(serializers.Serializer):
    token = serializers.CharField(max_length=12)

    def validate_token(self, value):
        user_id = self.context.get('user_id')
        return UserToken.objects.filter(user__id=user_id, token=value).exists()


在您看来:

serializer = CustomSerializer(... , context={'user_id': request.user.id})
if serializer.is_valid():
    ...

10-06 16:08