我是django的新手。我试图找出是否有可能在django中创建一个带有多个互连输入的字段。例如: 我正在尝试创建一个学生评估记录,其中我希望明智地存储每个学生的标记。为此我想要一个像这样的领域 subject1(下拉菜单选择主题)(最大标记)(获得的标记) subject2(下拉菜单选择主题)(最大标记)(获得的标记) 等等..
我可以这样做吗? 或者是有更好的方法来做到这一点,就像我在前一个领域中输入学生所持的学位或课程时,它会提取我在该特定学位下的科目列表,同样我可以为每个科目输入分数。因此,更容易显示学生的明智记录以及明智的主题。
Plz帮助..先谢谢!!
回复第一个ans: 还没有工作..要么我没有得到你,要么我实施错了 这是代码。我哪里错了?
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)
答案 0 :(得分:0)
听起来您需要创建一个名为Evaluation的附加模型,并使用ManyToMany字段将其链接到学生。
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)