如题,有两个表
子表
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'])
有什么更好的办法请救救孩子把~