0

我是 Django 的新手。我试图找出是否可以在 django 中创建一个需要多个相互关联的输入的字段。例如:我正在尝试创建一个学生评估记录,我想在其中存储每个学生科目的分数。为此,我想要一个像subject1(下拉菜单以选择主题)(最高分数)(获得的分数)subject2(下拉菜单以选择主题)(最高分数)(获得的分数)等字段。

我可以这样做吗?或者有没有更好的方法来做到这一点,比如当我输入前一个领域的学生所攻读的学位或课程时,它会为我获取该特定学位下的科目列表,并且我可以为每个科目输入分数。这样可以更容易地显示学生明智的记录以及学科明智。

请帮助..提前谢谢!

回复第一个答案:还没有工作..要么我不明白你,要么我执行错了这里的代码。我哪里错了?

class Evaluation(models.Model):
 student = models.ForeignKey('Student', related_name='Evaluation_Students')
 subject = models.ForeignKey('Subject', related_name='Evaluation_Subjects')
 def __unicode__(self):
    return self.Evaluation_Students




class Student(models.Model):
Student_First_Name = models.CharField(max_length = 50,default = 0)
Last_Name = models.CharField(max_length = 50, default = 0)
Registeration_Number = models.CharField(max_length = 12,default=0,unique=True)
SelectDegree = models.CharField(max_length=100,default = 0,choices=Allowed_courses)
Subjects= models.CharField(max_length = 100,choices=Subjects,default='-')
evaluations = models.ManyToManyField('Evaluation')
def __unicode__(self):
    return "{} {}".format(self.Student_First_Name, self.Last_Name)



class Subject(models.Model):
 SelectSubject = models.CharField(max_length = 4,choices=Subjects)
 Test_Type = models.CharField(max_length = 12,default= '-')
 Maximum_marks = models.IntegerField(default = 0)
 Marks_Obtained =  models.IntegerField(default = 0)
4

1 回答 1

0

听起来您需要创建一个名为“评估”的附加模型,并使用多对多字段将其链接到学生。

Student model:
     fields…
     evaluations = models.ManyToManyField(Evaluation)


Evaluation model:
      student = models.ForeignKey(Student)
      subject = models.ForeignKey(Subject)
      mark = models.CharField(…whatever…)

您也可以在没有多对多字段的情况下执行此操作并自己管理关系。例如,在学生模型中添加一个属性:

 Student model:

       @property
       def evaluations(self):
            return Evalution.objects.filter(student=self)
于 2012-07-05T09:19:02.770 回答