如何解决给学生分配科目
我正在从事一个学生管理系统项目,我有一个学生,科目,学期和班级模型,我想根据当前学期和班级为学生分配主题对象
class Subject(models.Model):
""" Subject """
name = models.CharField(max_length=200)
term = models.ForeignKey(AcademicTerm,on_delete=models.CASCADE,related_name="subject-term",null=True,blank=True)
student_class = models.ForeignKey('StudentClass',related_name="subject-class",blank=True)
staff_id = models.ForeignKey(CustomUser,blank=True)
class AcademicTerm(models.Model):
""" Academic Term """
name = models.CharField(max_length=20,unique=True)
current = models.BooleanField(default=False,null=True)
class StudentClass(models.Model):
name = models.CharField(max_length=200,unique=True)
term = models.ForeignKey(AcademicTerm,blank=True)
class Student(models.Model):
user = models.OneToOneField(User,related_name='student_profile',blank=True)
group = models.ForeignKey(Group,related_name='student_group',null=True)
teacher = models.ManyToManyField(Teacher,related_name="student_teacher",blank=True)
parent = models.ForeignKey('Parent',related_name="parent_sons",blank=True)
current_class = models.ForeignKey(StudentClass,on_delete=models.SET_NULL,related_name="student_class",null=True)
current_term = models.ForeignKey(AcademicTerm,related_name="student_term",null=True)
session_year = models.ForeignKey(AcademicSession,related_name="student_seccion",null=True)
subjects = models.ManyToManyField(Subject,related_name="student_subject")
def subject(self):
term = AcademicTerm.objects.get(current=True)
subs = Subject.objects.select_related('term').filter(term=term,student_class=self.current_class)
for sub in subs:
self.subjects = sub
def save(self,*args,**kwargs):
self.subject()
session = AcademicSession.objects.get(current=True)
self.session_year=session
parent = Parent.objects.filter(nationalId=self.parent_NationalId)
if parent:
self.parent = parent.get()
return super(Student,self).save(*args,**kwargs)
是否正在创建subject方法并在save方法中调用它?还是什么?
解决方法
您的模型排列不正确,可能会在迁移期间带来错误,最好是将AcademicTem模型先于Subject模型,然后再将DateField或DateTimeField添加到AcademicTerm可能会更好,以便您可以根据当前日期或时间,并检索与当前学术术语具有相同ID的科目,并将该科目分配给学生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。