Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中使用联接进行查询_Python_Mysql_Django - Fatal编程技术网

Python 在Django中使用联接进行查询

Python 在Django中使用联接进行查询,python,mysql,django,Python,Mysql,Django,前两个表/类包含课程和学生表,第三个包含序列化程序。任何人都可以帮助如何使用django中的连接进行查询。我需要从课程表中获取课程标题,从学生表中获取名字。要从相关对象中查询字段,请使用双下划线。所以你可以 class Students(models.Model): id = models.BigAutoField(primary_key=True) admission_no = models.CharField(max_length=255) roll_no = mod

前两个表/类包含课程和学生表,第三个包含序列化程序。任何人都可以帮助如何使用django中的连接进行查询。我需要从课程表中获取课程标题,从学生表中获取名字。

要从相关对象中查询字段,请使用双下划线。所以你可以

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__'

嗯,你应该回顾一下你的模型;学生中的课程id应该是一门课程=models.ForeignKey('Courses',…);通过这种方式,您可以使用点符号引用课程标题

student=student.objects.filter(pk=…)

要参考所需字段,请执行以下操作:

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

此外,如果我理解你的模型,你可能会有一些不协调。。。如果学生模型中存储在课程\家长\ id中的值与课程模型中存储在家长\ id中的值不同,该怎么办?也许第一个是多余的。

谢谢你@cory madden我会试试。你应该在你的模型中使用正确的外键,并使用好的反向名称。从长远来看,这将为你节省大量时间。
student.last_name, student.course.course_title