2017-07-17 7 views
0
class Students(models.Model): 
    id = models.BigAutoField(primary_key=True) 
    admission_no = models.CharField(max_length=255) 
    roll_no = models.CharField(unique=True, max_length=50, blank=True, null=True) 
    academic_id = models.BigIntegerField() 
    course_parent_id = models.BigIntegerField() 
    course_id = models.BigIntegerField() 
    first_name = models.CharField(max_length=20) 
    middle_name = models.CharField(max_length=20) 
    last_name = models.CharField(max_length=20) 
    user_id = models.BigIntegerField() 
    date_of_birth = models.DateField(blank=True, null=True) 
    date_of_join = models.DateField(blank=True, null=True) 

class Courses(models.Model): 
    id = models.BigAutoField(primary_key=True) 
    parent_id = models.IntegerField() 
    course_title = models.CharField(max_length=50) 
    slug = models.CharField(unique=True, max_length=50) 
    tenant_user = models.ForeignKey('Users', models.DO_NOTHING, default='') 
    course_code = models.CharField(max_length=20) 
    course_dueration = models.IntegerField() 
    grade_system = models.CharField(max_length=10) 
    is_having_semister = models.IntegerField() 
    is_having_elective_subjects = models.IntegerField() 
    description = models.TextField() 
    status = models.CharField(max_length=8) 
    created_at = models.DateTimeField(blank=True, null=True) 
    updated_at = models.DateTimeField(blank=True, null=True) 

    class Meta: 
     managed = True 
     db_table = 'courses' 

    def __unicode__(self): 
     return self.course_title 

class StudentProfileSerializer(ModelSerializer): 

    class Meta: 
     model = Students 
     depth = 0 
     fields = '__all__' 

最初の2つのテーブル/クラスにはコースと学生テーブルが含まれ、3つ目にはシリアライザが含まれています。誰もがdjangoの結合を使用してクエリを行う方法を助けてください。 Coursesテーブルからcourse_titleを取得し、Studentsテーブルからfirst_nameを取得する必要があります。Djangoでの結合を使用したクエリ

+0

モデルに適切な外部キーを使用して、リバース名を正しく使用する必要があります。それは長期的にあなたに多くの時間を節約します。 – Grimmy

答えて

0

関連オブジェクトのフィールドを照会するには、二重のアンダースコアを使用します。あなたが行うことができるので

Student.objects.filter(**kwargs).values('first_name', 'last_name', 'course__course_name') 
+0

私はそれを試してみます。 –

1

IMHO、モデルを確認する必要があります。生徒のcourse_idはcourse = models.ForeignKey( 'Courses'、...)でなければなりません。あなたはドット表記を使ってコースタイトルを参照することができます。

学生= Student.objects.filter(PK = ...)

あなたに必要なフィールドを参照します

student.last_name, student.course.course_title 

私はあなたのモデルを理解している場合以外にも、あなたには、いくつかの不適合を得ることができます。 .. Studentsモデルのcourse_parent_idに格納されている値がCoursesモデルのparent_idに格納されている値と異なる場合はどうなりますか?多分最初のものは冗長です。

関連する問題