2017-07-17 117 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__' 

前兩個表/類包含課程和學生表,第三個包含序列化程序。任何人都可以請幫助如何查詢使用Django中的連接。我需要從Students表中獲取course_title,並從Students表中獲取first_name。在Django中使用聯接的查詢

+0

你應該在你的模型具有良好的反向名稱中使用正確的外鍵。從長遠來看,這將節省您很多時間。 – Grimmy

回答

0

若要從相關對象查詢字段中使用雙下劃線。所以你可以做

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

謝謝你@cory馬登我會嘗試。 –

1

恕我直言,你應該檢討你的模型; course_id in students should be a course = models.ForeignKey('Courses',...);這樣你可以使用點符號引用課程標題;

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

參閱您所需的字段:

student.last_name, student.course.course_title 

另外,如果我理解你的模型,你可以得到一些不一致。 ..如果在Students模型中存儲在course_parent_id中的值與在Course模型中存儲在parent_id中的值不同?也許第一個是多餘的。