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

Что возвращает список значений масок. Как получить каждое значение valuelist (потому что в моем html у меня есть раскрывающийся список для отображения каждого объекта valuelist, отображается отлично, но когда я его выбираю, он возвращал меня как объект списка значений как ["5300A"] вместо 5300 A. Я использую 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]; я могу получить значение первого объекта отлично Что я могу сделать для остальные. значения объекта? Нужно ли мне улучшать мои view.py/resources? Спасибо заранее.

+0

Вы должны использовать '$ scope.maslist = data ['objects'] (ваш массив) после этого в html smth, как это. 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_list имеет flat аргумент для возврата плоского списка вместо списка списков (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)) 
Смежные вопросы