【问题标题】:DRF Serializer validation by database column按数据库列进行 DRF 序列化程序验证
【发布时间】:2017-02-19 06:33:42
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案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():
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多