2017-05-08 49 views
0

目前我正在使用Django 1.10。
例如,我們有以下型號:如何在加入Django中的多個表格時正確返回JSON響應

class ModelOne(models.Model): 
    description = models.CharField(max_length = 50) 
class ModelTwo(models.Model): 
    description = models.CharField(max_length = 50) 
    m1 = models.ForeignKey(ModelOne) 
class ModelThree(models.Model): 
    description = models.CharField(max_length = 50) 
    m2 = models.ForeignKey(ModelTwo) 

每次的請求,就這樣一個JSON響應,使用下面的代碼返回:

from app.models import * 
from django.http import HttpRequest,JsonResponse 

def ViewThatReceiveRequest(request): 
    qs = list(ModelThree.objects.filter(description__icontains='beauty').select_related('m2__m1') 
    data = [] 
    for key in qs: 
    temp_obj = {} 
    # if necessary I will convert the values before equating 
    temp_obj['desc3'] = key.description 
    temp_obj['desc2'] = key.m2.description 
    temp_obj['desc1'] = key.m2.m1.description 
    data.append(temp_obj) 
    return JsonResponse({'message' : 'success', 'qs' : data }, safe = False) 

注:
- 我使用Django作爲我的後端和ReactJs爲我的前端,所以我只需要JSON響應

我的問題,
- 我需要做這些每個收到請求的視圖?
- 我們有其他解決這些問題的方法嗎?

+0

您的代碼中存在一段引文,請參閱突出顯示。 –

+0

@克勞斯D.謝謝! –

回答

0

由於您只需要description字段中的所有3個模型,您還可以使用values方法或查詢集的values_list並獲取數據。

所以這個新的查詢將 ModelThree.objects.filter(description__icontains='beauty').select_related('m2__m1).values_list('description','m2__description','m2__m1__description')

接下來,如果你想運行一些改變你的數據,你可以運行情況下,map方法你想對所有的數據進行類似的更改。

接下來,您可以製作相應的json併發送到客戶端。