Django QuerySet values()包括ForeignKey字段

时间:2019-06-03 10:48:20

标签: django django-queryset

Django 2.2 在QuerySet上提供了一种方法values(),可将查询集转换为字典

我在应用程序中使用的与

相同
new_plan_quota = PlanQuota.objects.filter(
    **filter_query
).select_related('quota')

new_plan_quota_values = list(new_plan_quota.values())

会生成一个包含 PlanQuota 模型的所有字段的json字符串。

模型就像

class PlanQuota(models.Model):
    name = models.CharField()
    quota = models.ForeignKey(Quota)

如何在json中添加 Quota 模型的字段?

2 个答案:

答案 0 :(得分:0)

从文档中: https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values

像这样的东西

new_plan_quota_values = list(new_plan_quota.values('name', 'quota__field1', 'quota__field2', ...))

您需要从PLAN中显式添加“名称”

顺便说一句,如果您正在“列出”  价值观的结果。考虑使用values_list过滤器

在这里查看: https://docs.djangoproject.com/en/2.1/ref/models/querysets/#values-list

答案 1 :(得分:-1)

您可以使用__作为值中的字符串参数来添加当前模型拥有的所需字段以及相关模型拥有的相关字段。

您还可以使用F为相关字段设置别名,如下所示。

from django.db.models.expressions import F
new_plan_quota_values = list(new_plan_quota.values('name', field_alias=F('quota__field')))