【问题标题】: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():
...