Python 在Django中使用联接进行查询
前两个表/类包含课程和学生表,第三个包含序列化程序。任何人都可以帮助如何使用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
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