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'])

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值