DRF Serializer通过数据库列进行验证

时间:2017-02-19 06:33:42

标签: python django django-models django-rest-framework

我有这样的自定义序列化程序 -

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模型中,并且属于当前用户。

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

1 个答案:

答案 0 :(得分:1)

您应该将用户传递给序列化程序,然后在字段上执行验证:

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():
    ...