Я пытаюсь обновить булево поле из другой модели. у меня есть 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()