Any I'm trying to update a booleanfield from another model. i have 2 model studentcourse and Examgrade 'RelatedManager' object has no attribute 'show'

I have 2 models which are StudentCourses and ExamGrade, below are the models and attribute important which i would like to update on StudentCourses when ExamGrade is created

models.py

class StudentCourses(models.Model):
   id = models.AutoField(primary_key=True)
   student = models.ForeignKey(Students, related_name='studentcourses')
   studentcourse = models.ForeignKey(Courses, related_name='studentcourses', null=True)
   show = models.BooleanField(default=False)

class ExamGrade(models.Model):
    id = models.AutoField(primary_key=True)
    lecturer = models.ForeignKey(Lecturers, null=True, related_name='examgrades')
    student = models.ForeignKey(StudentCourses, related_name='examgrades')

class Students(models.Model):
   id = models.AutoField(primary_key=True)
   admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name="students")
   profile_pic = models.ImageField(default='default.jpg', upload_to='uploads/student')
   middle_name = models.CharField(max_length=255)
   gender = models.CharField(max_length=255)
   status = models.CharField(max_length=255, null=True)
country = models.CharField(max_length=255, default=None, null=True, blank=True)
   state = models.CharField(max_length=255, default=None, null=True, blank=True)
   local = models.CharField(max_length=255, default=None, null=True, blank=True)
   school = models.ForeignKey(School, null=True, on_delete=models.CASCADE)
   dob = models.CharField(max_length=100, default=None, blank=True, null=True)
   guardian_name = models.CharField(max_length=11, null=True)
   mobile = models.CharField(max_length=12, null=True, default=None)
   faculty = models.ForeignKey(Faculty, null=True, blank=True, on_delete=models.CASCADE)
   department = models.ForeignKey(Department, null=True, blank=True, on_delete=models.CASCADE)
   level = models.ForeignKey(Level, null=True, blank=True, on_delete=models.CASCADE)
   semester = models.ForeignKey('Semester', null=True, blank=True, on_delete=models.CASCADE)
   session = models.ForeignKey(SessionYearModel, null=True, blank=True, on_delete=models.CASCADE)
   created_at = models.DateTimeField(auto_now_add=True)
   updated_at = models.DateTimeField(auto_now_add=True)

   @property
   def examgrades(self):
      return self.examgrades_set.all().order_by('student')

   @property
   def studentcourses(self):
      return self.studentcourses_set.all().order_by('studentcourse')

from the model above the student are related to both StudentCourse and ExamGrade i would like to update the show attribute to True on StudentCourses and in my views i have this code below

Views.py

examgrades = ExamGrade(lecturer=lecturer, student=student)
examgrades.student.studentcourses.show = True
examgrades.save()

and this was my error 'RelatedManager' object has no attribute 'show'

Now you can simply do this:

examgrades = ExamGrade(lecturer=lecturer, student=student)
examgrades.student.show = True
examgrades.save()
Back to Top