1

我正在 django 1.4.5 中编写一个 API,它将 JSON 数据返回给第三方应用程序。

这是我目前检索数据的方法,但它需要更多时间,因为我还需要相关数据以 JSON 格式提供。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').select_related('series')
     for speaker in speakers:
         data['first_name'] = speaker.first_name
         data['last_name'] = speaker.last_name
         data['series_name'] = speaker.series.name
         data['series_id'] = speaker.series.id
     return JSONResponse(data_dict)

为了实现优化,我尝试如下。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').select_related('series')
     data_dict = serializers.serialize("python", speakers)
     return JSONResponse(data_dict)

但它返回 JSON 中相关数据的外键,这是无用的,因为我无法获取其相关数据。

它也尝试原始 sql 然后数据以元组返回,但我们需要字典格式。

需要帮助来实现这一目标。

提前致谢。

4

1 回答 1

0

如果我是你,我会使用以下内容。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').values('first_name', 'last_name', 'series__name', 'series__id')
     return JSONResponse(speakers)

在 django ORM 中,命名字段时只_使用一个下划线。由于两个下划线有另一种用法。在您的示例系列中是一个外键,如果您想在过滤和获取值时访问其字段,您可以使用 like'series__name'获取相关记录的名称字段。

除了values方法,还有values_list方法。您可以使用最适合您的。

于 2013-11-13T07:24:21.197 回答