class UserType(models.Model):
title = models.CharField(max_length=32)
def __str__(self):
return self.title
class Person(models.Model):
user = models.CharField(max_length=108)
type = models.ForeignKey(UserType, on_delete=models.CASCADE)
def __str__(self):
return self.user
select_related
一次连表查询获取所有的数据
连表查询性能低 UserInfo,UserType
def test(request):
# person_list = Person.objects.all()
person_list = Person.objects.all().select_related('user_type')
for row in person_list:
print(row.user, row.id, row.type_id)
print(row.type.title)
return HttpResponse('...')
prefetch_related
models.UserInfo.objects.prefetch_related('type')
# select * from UserInfo where id < 20
# 计算获取到的所有用户类型id [1, 2, 3]
# select * from UserType where id in [1, 2, 3]