簡體   English   中英

與Django ORM查詢相關的需求優化和性能

[英]Need Optimization & Performance related to Django ORM Query

我在Django 1.4.5中編寫一個API,該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,然后以元組返回數據,但我們需要使用字典格式。

需要幫助來實現這一目標。

提前致謝。

如果我是你,我將使用以下內容。

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中,命名字段時僅使用一個下划線_ 由於兩個下划線有另一種用法。 在示例系列中,外鍵是一個外鍵,如果您想在過濾和獲取值時訪問其字段,則可以使用'series__name''series__name'來獲取相關記錄的名稱字段。

除了values方法之外,還有values_list方法。 您可以使用最適合您的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM