2015-11-05 21 views
0

嗨,我有一個自定義的Django/python資源/視圖。如下所示獲取值列表中的每個值python

class ResourceView(JSONResponseMixin, View): 

def get(self, request, *args, **kwargs): 
    status = 'error' 
    msg = "Success" 
    # Getting the x value from url/queryset 
    x= self.request.GET.get('x') 
    mas = self.request.GET.get('mas') 

    queryset_df = Forecast.objects.filter(Q(x=int(fab)) | Q(x=int("0"+x)))\ 
     .values_list('mas').distinct() 

    queryset_or = Record.objects.filter(Q(pc_ext__x=int(x)) | Q(pc_ext__x=int("0"+x)))\ 
     .values_list('mas').distinct() 

    new_mas_list = list(set(list(queryset_df) + list(queryset_or))) 
    new_mas_list.sort() 
    return self.render_json_response(dict(objects=new_mas_list)) 

它返回一個maskset的值列表。如何獲取值列表的每個值(因爲在我的html中,我有一個下拉菜單來顯示每個值列表對象,顯示正常;但是當我選擇一個時,它返回值爲列表對象["5300A"]而不是5300A。我正在使用AngularJS來獲取值如下:

//UPDATE MAS BASED ON USER FAB 
$scope.update_mas = function(){ 
    $scope.processing['update_mas'] = { msg: 'loading mas..', class: 'text-warning', show: true }; 
    console.log('Stage1: Loading Mas..... '); 
    $http.get('{% url "masresourceview" %}', { params: { x: $scope.x} }).success(
     function(data){ 
      $scope.processing['update_mas'] = { msg: 'mas updated.', class: 'text-success' }; 
      setTimeout(function() { $scope.processing['update_mas'] = null; $scope.$apply(); }, 1000); 
      $scope.maslist = data['objects']; 
      $scope.isDisable = true; 
      console.log($scope.maslist); 

     }).error(function(data, status){ 
      $scope.processing['update_mas'] = { msg: 'Internal Error', class: 'text-danger' }; 
      console.log('Stage1: Internal error while loading initial data:'+status); 
     }); 
}; 

我的資源/列表如下:

{ 
objects: [ 
[ 
"AMD14NM" 
], 
[ 
"BAFFIN1" 
], 
[ 
"BAGERA1" 
], 
[ 
"ELLSMR1" 
], 
[ 
"GARFLD1" 
], 
[ 
"GARFLD2" 
], 

當我把$scope.maslist = data['objects'][0];我能得到的第一個對象的價值完全有什麼我可以爲其他地區做。對象的值?我是否需要改進我的views.py/resources?提前致謝。

+0

你應該使用'$ scope.maslist = data ['objects'](你的數組),然後在html中這樣做。 http://jsfiddle.net/nnpngxc1/ – Errorpro

+0

這裏是:http://jsfiddle.net/jkog5ph0/1/但我更喜歡準備數組之前顯示它。例如Ramda.flatten。 http://ramdajs.com/docs/#flatten – Errorpro

+0

對不起,平鋪之前的R是什麼? – vellattukudy

回答

0

剛剛更新了退回部分flatten

from compiler.ast import flatten

return self.render_json_response(dict(objects=flatten(new_mas_list)))

0

下面是一個例子:jsfiddle.net/jkog5ph0/1不過我更喜歡顯示它之前準備數組。例如Ramda.flatten。 ramdajs.com/docs/#flatten

0

雖然以前的答案看起來是正確的,但您可以在服務器端更簡單地處理此問題。

values_listflat參數返回一個平坦的列表,而不是名單列表(https://docs.djangoproject.com/fr/1.8/ref/models/querysets/#values-list

所以你的觀點應該是:

類的ResourceView(JSONResponseMixin,查看):

def get(self, request, *args, **kwargs): 
    status = 'error' 
    msg = "Success" 
    # Getting the x value from url/queryset 
    fab = self.request.GET.get('x') 
    mas = self.request.GET.get('mas') 

    # DRCForecast Masksets 
    queryset_df = Forecast.objects.filter(Q(x=int(fab)) | Q(x=int("0"+x)))\ 
     .values_list('mas', flat=True).distinct() 
    # OrcRecord Masksets 
    queryset_or = Record.objects.filter(Q(pc_ext__x=int(x)) | Q(pc_ext__x=int("0"+x)))\ 
     .values_list('mas', flat=True).distinct() 

    new_mas_list = list(set(list(queryset_df) + list(queryset_or))) 
    new_mas_list.sort() 
    return self.render_json_response(dict(objects=new_mas_list))