【发布时间】:2020-07-08 16:10:29
【问题描述】:
型号:
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 模型中读取,关联的灯光也不会显示。
编辑:
当尝试这样的事情时:
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)
【问题讨论】:
-
为什么使用 .values() 不能直接返回对象?你在使用 django-rest-framework 吗?
-
您会查询 LightGroup 模型而不是 Light 模型吗?
-
我没有使用 django rest 框架,JsonResponse 无法序列化对象。
-
当我查询 LightGroup 模型时,我只得到“id”和“name”。
标签: python django django-models jsonresponse