0

私はdjangoを初めて使用します。複数の相互リンクされた入力を受け取るdjangoでフィールドを作成できるかどうかを調べようとしています。例:各学生の科目ごとのマークを保存したい学生評価記録を作成しようとしています。このために、subject1(ドロップダウンメニューで件名を選択)(最大マーク)(取得したマーク)subject2(ドロップダウンメニューで件名を選択)(最大マーク)(取得したマーク)などのフィールドが必要です。

これはできますか?または、前のフィールドで学生によって説得された学位またはコースを入力するときのように、これを行うためのより良い方法があります。それは、その特定の学位の下の科目のリストを取得し、各科目のマークを入力するのと同じ方法です。学生ごとの記録と主題ごとの記録を表示しやすくするためです。

Plzヘルプ..事前に感謝します!!

最初の回答に返信してください:まだ機能していません..私はあなたを取得できなかったか、間違って実装しています。ここにコードがあります。どこが間違っているのですか?

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

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)
于 2012-07-05T09:19:02.770 に答える