Я пытаюсь обновить булево поле из другой модели. у меня есть 2 модели studentcourse и Examgrade объект 'RelatedManager' не имеет атрибута 'show'.

У меня есть 2 модели, а именно StudentCourses и ExamGrade, ниже приведены модели и атрибуты, которые я хотел бы обновить в StudentCourses при создании ExamGrade

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')

из приведенной выше модели студент связан как со студенческим курсом, так и с экзаменационным рейтингом. Я хотел бы обновить атрибут show на True для StudentCourses и в моем представлении у меня есть этот код ниже

Views.py

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

и это была моя ошибка 'RelatedManager' объект не имеет атрибута 'show'

Теперь вы можете просто сделать следующее:

examgrades = ExamGrade(lecturer=lecturer, student=student)
examgrades.student.show = True
examgrades.save()
Вернуться на верх