我正在尝试解决以下情况:
许多学生有许多学科,但只有一些学科被标记为他目前的学科,一个教室有多个科目,学生可以携带其他教室的主题,可以从他当前的教室中检查。
我想获得所有学生目前在所有课堂上拥有教室状态的所有学科。
class Student(models.model):
id = models.OnetoOneField(User)
class Subject(models.Model):
Subject_Master_Id=models.AutoField(primary_key=True)
Subject_Name=models.CharField(max_length=100,blank=False,unique=True)
user = models.ManyToManyField(Student,through = 'Student_Subject')
class Classroom(models.Model):
Class_Master_Id=models.AutoField(primary_key=True)
Classroom_Student = models.ManyToManyField(Student,through='Classroom_Student',related_name='classroom_student')
Classroom_Subject = models.ManyToManyField(Subject,through='Classroom_Subject',related_name='classroom_subject')
class Student_Subject(models.Model):
Student_Subject_Id = models.AutoField(primary_key=True)
subject= models.ForeignKey(Subject,on_delete = models.CASCADE, related_name='student_subject')
user=models.ForeignKey(Student,on_delete = models.CASCADE, related_name='student_subject')
is_current = models.BooleanField()
class Classroom_Student(models.Model):
Classroom_Student_Id=models.AutoField(primary_key=True)
Classroom_Id=models.ForeignKey(Classroom,on_delete=CASCADE)
Student_Id=models.ForeignKey(Student,on_delete=CASCADE, related_name= 'student')
is_current = models.BooleanField()
class Classroom_Subject(models.Model):
Classroom_Subject_Id=models.AutoField(primary_key=True)
Classroom_Id=models.ForeignKey(Classroom,on_delete=CASCADE)
Subject_Id=models.ForeignKey(Subject,on_delete=CASCADE, related_name='subject')
好吧,我要通过简单地简单地构建您的模型来进行操作:
models.py
class Subject(models.Model):
name=models.CharField(max_length=100,blank=False,unique=True)
students = models.ManyToManyField(Student)
classroom = models.ForeignKey(Classroom)
class Classroom(models.Model):
name=models.CharField(max_length=100,blank=False,unique=True)
class Student(models.Model):
id = models.OnetoOneField(User)
current_location = models.ForeignKey(Classroom, null=True,blank=True)
在阅读您的目标时"我想获得学生目前在所有课堂上拥有教室状态的所有学科,无论是否当前。"
这是我了解您在问的内容: 1.学生学习哪些学科? 2.对于每个主题: 3.提供有关该主题教室的详细信息 4.回答那个教室是否是学生当前的教室。
views.py
# say we are given variable student, an instance of Student model...
students_subjects = student.subject_set.all(id=student.id)
for subject in students_subjects:
description = "Subject:"+subject.name+" is in classroom:"+subject.classroom+" which is "
if not student.subject_set.filter(classroom=student.current_location).exists():
description += "not "
description += "their current location."
print(description)