I'm trying to register a user and have the email part go into the user name from the Members model, but I'm getting the above error.
In auth_user username Equals [blablabla]@gmail.. in brackets I'm trying to add the same to the Members user, for a ForeignKey relationship. To make user equal to blablabla
Serializers
class RegisterSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(required=True)
password2 = serializers.CharField(required=True)
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Members
fields = ('first_name', 'last_name', 'user', 'email', 'photo', 'gender', 'password1', 'password2')
def validate_email(self, email):
email = get_adapter().clean_email(email)
if allauth_settings.UNIQUE_EMAIL:
if email and email_address_exists(email):
raise serializers.ValidationError("A user is already registered with this email address.")
return email
def validate_password1(self, password):
return get_adapter().clean_password(password)
def validate(self, data):
if data['password1'] != data['password2']:
raise serializers.ValidationError("The two password fields didn't match.")
return data
def get_cleaned_data(self):
return {
'password1': self.validated_data.get('password1', ''),
'email': self.validated_data.get('email', ''),
}, {
'first_name': self.validated_data.get('first_name', ''),
'last_name': self.validated_data.get('last_name', ''),
'photo': self.validated_data.get('photo', ''),
'gender': self.validated_data.get('gender', ''),
'email': self.validated_data.get('email', ''),
'user': self.validated_data.get('user', ''),
}
def save(self, request):
adapter = get_adapter()
user = adapter.new_user(request)
self.cleaned_data, data_for_members = self.get_cleaned_data()
Members.objects.create(**data_for_members)
adapter.save_user(request, user, self)
setup_user_email(request, user, [])
user.save()
return user
class LoginSerializer(RestAuthLoginSerializer): username = None
Models
class Members(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
gender_choices = (('F', 'Female'), ('M', 'Man'), ('U', 'Undefined'))
gender = models.CharField(max_length=1, choices=gender_choices, default='U')
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
email = models.EmailField()
def save(self, *args, **kwargs):
super(Members, self).save(*args, **kwargs)
img = self.photo
print(img, 321)
watermark(img)