2017-02-19 5 views
1

У меня есть пользовательский сериалайзер как this--DRF Serializer проверки по столбцам базы данных

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

Вы должны передать пользователю сериализатором, а затем осуществить проверку на поле:

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(): 
    ... 
Смежные вопросы