2017-07-17 32 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中的值不同?也许第一个是多余的。