2015-04-23 44 views
0

我想驗證電子郵件ID,如果在用戶模型已存在註冊Django的REST框架電子郵件驗證

之前,這是我的串行器與驗證

class RegistrationSerializer(serializers.Serializer): 
    username = serializers.CharField(max_length=100) 
    email = serializers.EmailField() 
    password = serializers.CharField(max_length=100) 

    def validate_email(self,attrs): 
      email=attrs['email'] 
      print email 
      if email: 
        emailset = Q(email__icontains=email) 
        emailres = User.objects.filter(emailset) 
        if emailres: 
          msg = _('The email address is already taken') 
          raise serializers.ValidationError(msg) 
        else: 
          return attars 

它拋出錯誤「類型錯誤:字符串索引必須是整數」

email=attrs['email'] 

類型錯誤:字符串索引必須是整數

回答

4

我猜你已經升級或使用DRF 3.x,所以沒有更多的attrs字典,但價值取而代之。請參閱field-level-validation

更多在那裏已經有UniqueValidator。所以我認爲你可以這樣做:

class RegistrationSerializer(serializers.Serializer): 
    #... 
    email = serializers.EmailField(validators=[UniqueValidator(queryset=User.objects.all())]) 
+1

謝謝Todor它的工作 – Naresh

+0

@Todor,太棒了! – bgarcial