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