django数据库取出数据,并连同外键内容一同返回数据列表

如题,有两个表
子表

class Disk(models.Model):
    D_Id = models.CharField(max_length=50)
    Size = models.IntegerField()
    Jug_Dif = models.CharField(max_length=50)
    fun = models.ForeignKey(to="Fun1",to_field="InstanceId",on_delete=models.CASCADE,)

主表

class Fun1(models.Model):
    InstanceId = models.CharField(max_length=50,primary_key=True)
    InstanceName = models.CharField(max_length=50)

希望返回主表的内容和子表的size信息,一开始打算在返回主表queryset的时候,对其每条数据尝试增加实例属性,然后返回一个列表,希望只遍历一次queryset,但是失败了,(不知道是不是不能修改还是咋的),然后尝试每次遍历返回一个数组元素,然后拼接一下,返回整个列表,也失败了= =,(菜鸡请谅解)最后直接将主表返回内容转换成list,然后for循环将列表里的每一个对象分别添加一个键值对,返回最终的列表,最终得到结果:

 re_list = list(Fun1.objects.all().values())
    ret = Fun1.objects.all()
    for i in  range(len(re_list)):
        re_list[i]['Dis_Size']=list(ret.get(InstanceId=re_list[i]['InstanceId']).disk_set.all().values('Size'))
        print(re_list[i]['Dis_Size'])

有什么更好的办法请救救孩子把~

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页