0

Suppose, j'ai deux tableaux ci-dessous: enter image description hereComment joindre une table avec django?

J'ai fait l'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' 

Est-il possible de se joindre à la table si Student.Student_Id comme clé primaire (pas étranger aussi)? Et comment dois-je créer le fichier view.py et le modèle qui représentent l'identifiant de l'étudiant, le nom de l'étudiant et la note? Merci d'avance.

Répondre

0

Je ne suis pas vraiment expérimenté avec Django, mais pour ce qui est de rejoindre les deux tables, vous pouvez le faire. Rejoindre deux tables qui ont des relations de clé primaire et étrangère est en fait la même chose que de mettre une opération RESTRICT ordinaire sur la ligne, c'est-à-dire en utilisant explicitement. OERE Students.students_id = Score.students_id. La jointure ordinaire détermine automatiquement cela pour vous.

0

Je vous suggère de mettre à jour votre 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) 

Vous pouvez accéder au modèle de score dans le views.py

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

Accès scores dans le modèle HTML

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