2015-11-05 60 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))