2017-10-13 58 views
0

假設,我有下面兩個表: enter image description here如何與django連接表?

我做了models.py:

class Score(models.Model): 
    Student_Id = models.CharField(max_length=20, primary_key=True) 
    Grade = models.CharField(max_length=30) 
    Status= models.CharField(max_length=3) 

    class Meta: 
     db_table ='T_Score' 


class Student(models.Model): 
    Student_Id = models.CharField(max_length=20, primary_key=True) 
    Student_Name = models.CharField(max_length=30) 
    Student_Class = models.CharField(max_length=3) 

    def __str__(self): 
     return { 
      "id" : self.Student_Id, 
      "name" : self.Student_Name, 
     } 

    class Meta: 
     db_table ='T_Student' 

是否有可能加入表,如果Student.Student_Id就像主鍵(不作爲外國人)?我應該如何製作代表學生證,學生姓名和成績的view.py和模板? 預先感謝您。

回答

0

我對Django並沒有真正的經驗,但就加入兩張桌子而言,你可以。加入兩個具有主鍵和外鍵關係的表格實際上與將普通RESTRICT操作放在行上相同,即通過明確使用。 WHERE Students.students_id = Score.students_id。普通加入會自動爲您計算。

0

我建議你更新你的models.py。

class Student(models.Model): 
    name = models.CharField(max_length=30) 
    s_class = models.CharField(max_length=3) 

class Score(models.Model): 
    student = models.ForeignKey(Student) 
    grade = models.CharField(max_length=30) 
    status= models.CharField(max_length=3) 

您可以在views.py

scores = Score.objects.all() 
context = { 
    'scores': scores 
} 

訪問的分數,在HTML模板訪問分數模型

{% for score in scores %} 
    ID - {{ score.student.id }} 
    NAME - {{ score.student.name }} 
    GRADE - {{ score.grade }} 
{% endfor %}