Django ValueError at /updatestudent/3 Cannot assign “‘1′”: “Student.class_id” must be a “Class” instance

Solution for Django ValueError at /updatestudent/3 Cannot assign “‘1′”: “Student.class_id” must be a “Class” instance
is Given Below:

ValueError at /updatestudent/3 Cannot assign “‘1′”: “Student.class_id” must be a “Class” instance. This error comes when I am trying to update my student model. when I am updating username also than it doesn’t throw any error but if I am not updating username than only this throwing this error

Any help is appericiated.

models.py

class CustomUser(AbstractUser):
    user_type_data = ((1,'HOD'),(2,'Staff'),(3,'Student'))
    user_type = models.CharField(default=1, choices=user_type_data, max_length=10)
class Student(models.Model):
    id = models.AutoField(primary_key=True)
    admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    gender = models.CharField(default=1, choices=gender_type, max_length=10)
    profile = models.ImageField(upload_to='student/profile-images/%y/%m/%d/', default="student/profile-images/default.jpg", blank=False, null=False)
    address = models.TextField()
    class_id = models.ForeignKey(Class, on_delete=models.CASCADE, default=1)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()
    def full_name(self):
        return self.admin.first_name+' '+self.admin.last_name

    def __str__(self):
        return self.admin.username

class Session(models.Model):
    id = models.AutoField(primary_key=True)
    session_start= models.IntegerField()
    session_end = models.IntegerField()
    objects = models.Manager()
    def __str__(self):
        return f'{self.session_start} {self.session_end}'

class Course(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()
    def __str__(self):
        return self.name

class Class(models.Model):
    id = models.AutoField(primary_key=True)
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    branch = models.CharField(default="CSE", choices=branch_data, max_length=40)
    year = models.CharField(default="First Year", choices=year_data, max_length=15)
    session = models.ForeignKey(Session, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)
    objects = models.Manager()

    def __str__(self):
        return f'{self.course} {self.branch} {self.year} {self.session}'

    def name(self):
        return f'{self.course} {self.branch} {self.year} {self.session}'

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.db.models import fields
from .models import (AdminHOD, Staff, Student, Class,  
                    CustomUser, Course, Session, Attendance, 
                    ExamType, Exam, Subject)
from .models import branch_data, year_data


gchoice = (('1','Male'),('2','Female'))
sesschoice = tuple((i.id, i.id) for i in Session.objects.all())
courchoice = tuple((i.id,i) for i in Course.objects.all())
choice_exam = tuple((i.id,i.name) for i in ExamType.objects.all())
all_class = tuple((i.id, i.name) for i in Class.objects.all())

class UserUpdateForm(UserChangeForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'username', 'email']

class StudentUpdateForm(forms.ModelForm):
    gender = forms.ChoiceField(choices=gchoice)
    address = forms.CharField()
    class_id = forms.ChoiceField(choices=all_class)

    class Meta: 
        model = Student
        fields = ['gender', 'class_id', 'address']

views.py

    if request.method=='POST':
        uform = UserUpdateForm(request.POST)
        sform = StudentUpdateForm(request.POST)
        if uform.is_valid():
            address = request.POST.get('address')
            username = request.POST.get('username')
            clas = Class.objects.get(id=request.POST['class_id'])
            email = request.POST.get('email')
            gender = request.POST.get('gender')
            print(clas)
            try:
                student = Student.objects.get(id=id)
                user = student.admin
                user.username = username
                user.email = email
                user.save()
                student.address = address
                student.gender = str(gender)
                student.class_id = clas
                student.updated_at = datetime.datetime.now()
                student.save()
                messages.success(request,'Student successfully Updated.')
                return redirect('/managestudent')
            except:
                messages.error(request,'Student has not been Updated due to some technical issues.')
                return render(request, 'cmsapp/hod/studentupdate.html', {'uform':uform,'sform':sform})
        else:
            messages.error(request,sform.errors)
            return render(request, 'cmsapp/hod/studentupdate.html', {'uform':uform,'sform':sform})

    else:
        uform = UserUpdateForm(instance=Student.objects.get(id=id).admin)
        sform = StudentUpdateForm(instance=Student.objects.get(id=Student.objects.get(id=id).id))
        return render(request, 'cmsapp/hod/studentupdate.html', {'uform':uform,'sform':sform})

studentupdate.html

        <h3>Update Student</h3>
        <form action="" method="POST" class="form-group">
            {% csrf_token %}
            {{uform}}
            {{sform}}
            <button type="submit">Update Student</button>
        </form>
    </div>

traceback

Traceback (most recent call last):
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangocorehandlersexception.py", line 47, in inner
    response = get_response(request)
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangocorehandlersbase.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:UsersAkash Deep SaingarDesktopMySiteCollegeErpcmsapphodviews.py", line 176, in update_student
    messages.error(request,sform.errors)
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangoformsforms.py", line 172, in errors
    self.full_clean()
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangoformsforms.py", line 376, in full_clean
    self._post_clean()
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangoformsmodels.py", line 400, in _post_clean
    self.instance = construct_instance(self, self.instance, opts.fields, opts.exclude)
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangoformsmodels.py", line 63, in construct_instance
    f.save_form_data(instance, cleaned_data[f.name])
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangodbmodelsfields__init__.py", line 891, in save_form_data
    setattr(instance, self.name, data)
  File "C:UsersAkash Deep SaingarDesktopMySitevenvlibsite-packagesdjangodbmodelsfieldsrelated_descriptors.py", line 215, in __set__
    raise ValueError(

Exception Type: ValueError at /updatestudent/3
Exception Value: Cannot assign "'1'": "Student.class_id" must be a "Class" instance.

In StudentUpdateForm, try to change the class_id field to:

class_id = forms.ModelChoiceField(queryset=Class.objects.all())