2016-09-20 137 views
0

我使用Django的REST框架,並有這樣的代碼做一個PUT電話:獲取JSON數據的QueryDict

$.ajax({ 
    url: '/api/v1/order/'+orderid+'/', 
    type: 'PUT', 
    data: { book: true } 
}); 

,這是處理的觀點,即:

@api_view(['PUT', 'POST']) 
@authentication_classes((SessionAuthentication, TokenAuthentication, BasicAuthentication)) 
@permission_classes((IsAuthenticated,)) 
def api_orderbook(request, orderid): 
    logger.debug(request.data) 
    if request.method == 'PUT' and request.data.get("book") == True: 
     ... do stuff ... 

但是,在request.data.get("book")不是一個布爾值,而是一個字符串:

<QueryDict: {u'book': [u'true']}> 

當我在阿賈克斯C使用JSON.stringify({ book: true })首先,它更是雪上加霜:

<QueryDict: {u'{"book":true}': [u'']}> 

我怎樣才能得到JavaScript對象爲在我的代碼正確的Python QueryDict

回答

0

如果您已經在model.py中將data字段定義爲BooleanField,那麼您應該在發送ajax請求之前將bool值從true/false轉換爲整數0/1。下面是示例代碼:

$.ajax({ 
    url: '/api/v1/order/'+orderid+'/', 
    type: 'PUT', 
    data: { book: 1 } // 1 stands for true in BooleanField 
}); 

實際上,BooleanField將在數據庫中存儲0/1整數而不是true/false。

+0

這與模型無關。這是觸發某種行爲的布爾值。 –