我有这些模特:
每个学生都有一位私人教师:
class Student(models.Model):
name= models.CharField(max_length=200, default='', blank=True)
group= models.CharField(max_length=200, default='', blank=True)
teacher= models.ForeignKey(Teacher, null=True, blank=True)
session = models.IntegerField(default=99, blank=True)
def __str__(self):
return self.name
老师可以在一,二,三,四课教授。
class Teacher(Employe):
...
session1 = models.NullBooleanField(default='', blank=True)
session2 = models.NullBooleanField(default='', blank=True)
session3 = models.NullBooleanField(default='', blank=True)
session4 = models.NullBooleanField(default='', blank=True)
def __str__(self):
return self.name
每个教室只有一名教师参加该特定课程。
class Classroom(models.Model):
code = models.CharField(max_length=10, default='', blank=True)
teacherSession1 = models.ForeignKey(Teacher, null=True, blank=True, related_name='S1')
teacherSession2 = models.ForeignKey(Teacher, null=True, blank=True, related_name='S2')
teacherSession3 = models.ForeignKey(Teacher, null=True, blank=True, related_name='S3')
teacherSession4 = models.ForeignKey(Teacher, null=True, blank=True, related_name='S4')
def __str__(self):
return self.code
我想构建一个输出类似的东西:
学生姓名,学生组,课堂(会议1至4)
到目前为止,我已经想出了这个,但我很难获得课堂代码。
def list_student_plan(session):
my_list = Student.objects.values('name', 'group', 'teacher__name').filter(Q(session=session))
return my_list
答案 0 :(得分:1)
这是我推荐的型号
组
class Groups(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=255, blank=True)
def __str__(self):
return self.name
学生模特
class Student(models.Model):
name = models.CharField(max_length=200, default='', blank=True)
group = models.ForeignKey(Groups, null=True, blank=True, unique=False)
def __str__(self):
return self.name
代码模型
class Code(models.Model):
name = models.CharField(max_length=200)
code = models.CharField(max_length=25)
description = models.CharField(max_length=255)
def __str__(self):
return self.name
教师模型
class Teacher(models.Model):
name = models.CharField(max_length=200)
code = models.ForeignKey(Code, unique=False)
def __str__(self):
return self.name + " " + self.code.name
会话
class Sessions(Employe):
teacher = models.ForeignKey(Teacher, unique=False)
student = models.ForeignKey(Student, unique=False)
session = models.IntegerField(null=True, blank=True)
def __str__(self):
return self.teacher.name + ' ' + self.student.name
现在使用" Sessions"将帮助您更好地管理会话将包含值的位置 在1-4之间(可能更多 - 想象一下如果你在一天中增加了一段时间)。通过老师,您将获得一个代码,您可以拥有多个具有多个代码的教师,或者具有多个代码的同一个教师。我希望这能让你朝着正确的方向前进,我认为这是一个更清洁的方法来解决这个问题,让我知道如果你有任何问题,我会添加更多的细节。