I couldn't see you inherited from AbstractUser class in your defined
Student model shared here.

Thanks

On Sun, Jul 7, 2019, 10:47 AM laya <[email protected]> wrote:

> AttributeError:'Student' object has no attribute 'check_password'
> <https://stackoverflow.com/questions/56913327/attributeerrorstudent-object-has-no-attribute-check-password>
>
> I user Custom User Model named Student which inherits Django User Model. I
> have problem in its logon when I want to use check_password. The error is
> that Student which is a custom user model has not such attribute.
>
> I wanna login students with the registered information by them. and the
> fields to login is identity_no and student_no.
>
> models.py:
>
> class CustomUser(AbstractUser):
>
>     USER_TYPE_CHOICES = ((1, 'student'),
>
>                          (2, 'professor'),)
>
>     username = models.CharField(max_length=50, unique=True)
>
>     user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES, 
> null=True)
>
>     first_name = models.CharField(max_length=50)
>
>     last_name = models.CharField(max_length=100)
>
>     identity_no = models.PositiveIntegerField(default=0)
>
>     email = models.EmailField(max_length=300)
>
>     date_joined = models.DateTimeField('date joined', default=timezone.now)
>
>     is_active = models.BooleanField(default=True)
>
>     is_admin = models.BooleanField(default=False)
>
>     is_staff = models.BooleanField(default=False)
>
>
>
>
>
> class Student(models.Model):
>
>     user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
>
>     entry_year = models.PositiveIntegerField()
>
>     student_no = models.PositiveIntegerField()
>
>
>
>     def get_full_name(self):
>
>         return self.user.first_name + self.user.last_name
>
>
>
>     def __unicode__(self):
>
>         return self.get_full_name()
>
>
>
> Serializers.py:
>
> class StudentLoginSerializer(serializers.ModelSerializer): user = 
> CustomUserSerializerForLogin()
>
>     class Meta:
>
>         model = Student
>
>         fields = [
>
>             "user",
>
>             "student_no", ]
>
>
>
>     def validate(self, data):  # validated_data
>
>         user_data = data.pop('user', None)
>
>         identity_no = user_data.get('identity_no')
>
>         print("identity_no", identity_no)
>
>         student_no = data.get("student_no")
>
>         user = Student.objects.filter(
>
>             Q(user__identity_no=identity_no) |
>
>             Q(student_no=student_no)
>
>         ).distinct()
>
>         # user = 
> user.exclude(user__identity_no__isnull=True).exclude(user__identity_no__iexact='')
>
>         if user.exists() and user.count() == 1:
>
>             user_obj = user.first()
>
>         else:
>
>             raise ValidationError("This username or student_no is not 
> existed")
>
>         if user_obj:
>
>             if not user_obj.check_password(student_no):  # Return a boolean 
> of whether the raw_password was correct.
>
>                 raise ValidationError("Incorrect Credential please try again")
>
>         return user_obj
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
> Windows 10
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/5d218062.1c69fb81.f85a6.42f3%40mx.google.com
> <https://groups.google.com/d/msgid/django-users/5d218062.1c69fb81.f85a6.42f3%40mx.google.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAKWugDW1jyEO8750PM9WgS7NmBHxciEatjFxzhjdoyfHCyr_wQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to