2012-07-05 55 views
0

我是django的新手。我試圖找出是否有可能在django中創建一個需要多個相關鏈接輸入的字段。例如: 我正在嘗試創建一個學生評估記錄,在其中我想存儲每個學生明智的標記。爲此我需要一個字段 subject1(下拉菜單選擇主題)(最大標記)(獲得標記) subject2(下拉菜單選擇主題)(最大標記)(獲得標記) 等等。Django創建子字段

我可以這樣做嗎?? 或者是否有更好的方法來做到這一點,比如當我輸入前一個領域的學生的學位或課程時,它會提取我在該特定學位下的科目列表,並以同樣的方式爲每個科目輸入標記。因此,顯示學生明智的記錄以及明智的主題會更容易。

Plz help ..提前致謝!

回覆第一個回覆: 還沒有工作呢..要麼我cudn't讓你或我實施它錯 這裏的代碼。我哪裏錯了?

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

聽起來像您需要創建一個名爲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) 
+0

還沒有成型..要麼我cudn't讓你或我實現它錯 這裏的代碼。我哪裏錯了? – Ankita 2012-07-05 10:11:53

+0

請檢查原代碼中編輯的代碼 – Ankita 2012-07-05 10:24:18

相關問題