Nar*_*esh 2 django django-rest-framework
我希望在注册前验证用户模型中是否存在电子邮件ID
这是我的验证序列化器
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
Run Code Online (Sandbox Code Playgroud)
它抛出错误"TypeError:字符串索引必须是整数"
email=attrs['email']
Run Code Online (Sandbox Code Playgroud)
TypeError:字符串索引必须是整数
我猜你已升级或使用DRF 3.x,因此没有更多的attrs字典而是价值.请参阅字段级验证
更多的是已经有一个UniqueValidator.所以我认为你可以做到:
class RegistrationSerializer(serializers.Serializer):
#...
email = serializers.EmailField(validators=[UniqueValidator(queryset=User.objects.all())])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4334 次 |
| 最近记录: |