while creating a custom user through the postman api on django im facing this repetedly. please help me to resolve this
models.py
ROLES = (
(1, 'admin'),
(2, 'customer'),
(3, 'seller'),
)
STATE_CHOICES = (
('Odisha', 'Odisha'),
('Karnataka', 'Karnataka')
)
class UserManager(BaseUserManager):
def create_user(self, email, password, **extra_fields):
if not email:
raise ValueError('The email is not given')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.is_active = True
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_active', True)
if not extra_fields.get('is_staff'):
raise ValueError('Superuser must have is_staff = True')
if not extra_fields.get('is_superuser'):
raise ValueError('Superuser must have is_superuser = True')
return self.create_user(email, password, **extra_fields)
class Roles(models.Model):
role = models.SmallIntegerField(choices=ROLES)
class Custom_User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(max_length=100, unique=True)
password = models.CharField(max_length=100)
first_name = models.CharField(max_length=100, null=True, blank=True)
last_name = models.CharField(max_length=100, null=True, blank=True)
role = models.ForeignKey(Roles, on_delete=models.CASCADE)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
def add_to_group(self):
role_instance = self.role
group_name = None
if role_instance.role == 4:
group_name = 'admin'
elif role_instance.role == 5:
group_name = 'customer'
elif role_instance.role == 6:
group_name = 'seller'
if group_name:
group, created = Group.objects.get_or_create(name=group_name)
self.groups.set([group])
return self
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['role']
objects = UserManager()
def __str__(self):
return self.email
def has_module_perms(self, app_label):
return True
def has_perm(self, onj=None):
return True
serializers.py:
# Create User
class CreateUserSerializer(serializers.ModelSerializer):
class Meta:
model = Custom_User
fields = '__all__'
extra_kwargs = {
'first_name': {'required': True},
'last_name': {'required': True},
'password': {'required': True}
}
def validate(self, attrs):
email = attrs.get('email', '').strip().lower()
if Custom_User.objects.filter(email=email).exists():
raise serializers.ValidationError("Email already exists")
return attrs
def create(self, validated_data):
user = Custom_User.objects.create_user(**validated_data)
return user
view.py
class Create_User_API(CreateAPIView):
queryset = Custom_User.objects.all()
serializer_class = CreateUserSerializer
permission_classes=(AllowAny,)
def perform_create(self, serializer):
# Call the parent perform_create method to create the user
user = serializer.save()
# Call the add_to_group method to assign the user to the appropriate group
user.add_to_group()
the problem arises when later i included the permissionsMixin class
Please help me to resolve this issue... tried different approach but still can't able to find the solution for this error