首页 > 解决方案 > 从跨外键的 Django 模型创建 JSON 数据

问题描述

我在我的 Django 2 模板中使用 D3 来创建绘图,但我不确定如何最好地创建一个包含来自父模型和子模型的数据的 JSON 对象。例如,这些是我的模型:

class Properties(models.Model):
  house_size     = models.IntegerField(blank=True, null=True)

class Prices(models.Model):
  price    = models.IntegerField(default=0)
  house    =models.ForeignKey(Properties,on_delete=models.CASCADE,default=0)

我知道要从价格创建 JSON 对象,我可以执行以下操作:

statdump = json.dumps(list(Prices.objects.all()), cls=DjangoJSONEncoder)

但是,如果我想创建一个包含 price 和 house_size 的 JSON 对象怎么办。

我可以想出一些低效的方法来解决这个问题,例如遍历模板中的观察结果并在那里创建 JSON 数据,但这似乎不是很有效。有没有办法可以从包含 house_size 和 price 的视图中传递 JSON 对象?

提前致谢

标签: jsondjango

解决方案


尝试使用

from django.db.models import F
from django.core import serializers

objectQuerySet =  Prices.objects.all().annotate(house_size = F('house__house_size'))
statdump = serializers.serialize('json', objectQuerySet, fields=('price','house_size'))

[编辑] 如果您想将其返回到模板,请尝试使用:

from django.db.models import F
from django.core import serializers
from django.http import JsonResponse

objectQuerySet =  Prices.objects.all().annotate(house_size = F('house__house_size')).values('price','house_size')
return JsonResponse({'jsonObject'=list(objectQuerySet)},safe=False)

推荐阅读