Django有很多字段没有包含在api调用中



型号:

class Light(models.Model):
name = models.CharField(max_length=255, default="neues Licht", null=False, blank=False)
percentage = models.IntegerField(default=0, null=False, blank=False)
def __str__(self):
return self.name

class LightGroup(models.Model):
name = models.CharField(max_length=255, default="neue Gruppe", null=False, blank=False)
lights = models.ManyToManyField(Light,related_name='groups')
def __str__(self):
return self.name 

视图:

def get(self, request, *args, **kwargs):
lights = Light.objects.all().values()
lights_list = list(lights)
return JsonResponse(lights_list, safe=False) 

结果:

[{"id": 2, "name": "light 1", "percentage": 3}] 

如何在jsonresponse中包含组?

在管理面板中查看组时,连接确实会显示出来。但是,即使我尝试从LightGroup模型中读取,关联的Lights也不会显示。

编辑:

当尝试这样的东西时:

def get(self, request, *args, **kwargs):
obj = Light.objects.all()
lights = obj.groups.all().values()
lights_list = list(lights)
return JsonResponse(lights_list, safe=False)

我得到:AttributeError-"QuerySet"对象没有属性"groups">

编辑2:解决方案:

我使用Manjit Kumars的答案进入小组,并能够以我想要的形式获得数据:

def get(self, request, *args, **kwargs):
lights_list =[]
lights = Light.objects.all().values()
lights_obj = Light.objects.all()
for light_obj, light in zip(lights_obj, lights):
light_groups = light_obj.groups.all().values()
light["groups"] = list(light_groups)
lights_list.append(light)
return JsonResponse(lights_list, safe=False)

json

Model.objects.all((返回一个查询集,该查询集包含模型的所有匹配对象。

你想做的是:

def get(self, request, *args, **kwargs):
lights_list = []
lights = Light.objects.all()
for light in lights:
light_groups = light.groups.all().values()
lights_list = list(light_groups)
return JsonResponse(lights_list, safe=False)

或者,您可以查看django-rest框架和ModelViewSets,它们为您的API提供了更多的功能。

最新更新