[英]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.