我有一个这样的自定义序列化器-
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():
...