2012-03-27 2 views
0

Мне нужно отображать группы по секторам, искать какой-то метод для этого, но не найти в json. Код:Атрибуты группы Json в JQuery

$(function displays(){ 
var url = '{% url get_displays %}'; 
$.getJSON(url, function(data) { 
    var sidebar = $('.sidebar'); 
     $.each(data, function(i, c) {    
      sidebar.append('<ul>'+c.fields.setor.fields['nome']+'<li>'+c.fields['nome']+' - '+c.fields['janelas']+'</li>'+'</ul>');    
    }); ///close each   
}); ///close getJson 
}); ///close function 

Изображение показать два объекта в то же Setor Валенса, но отделенный:
http://postimage.org/image/myc7xsgwh/

JSON выход:

[ 
{ 
    "pk": 2, 
    "model": "display.display", 
    "fields": { 
     "data_criacao": "2012-03-27", 
     "setor": { 
      "pk": 2, 
      "model": "display.setor", 
      "fields": { 
       "nome": "Rio de Janeiro" 
      } 
     }, 
     "janelas": 12, 
     "nome": "Restaurante" 
    } 
}, 
{ 
    "pk": 3, 
    "model": "display.display", 
    "fields": { 
     "data_criacao": "2012-03-27", 
     "setor": { 
      "pk": 1, 
      "model": "display.setor", 
      "fields": { 
       "nome": "Valença" 
      } 
     }, 
     "janelas": 12, 
     "nome": "Loja de Roupas Dimais" 
    } 
}, 
{ 
    "pk": 1, 
    "model": "display.display", 
    "fields": { 
     "data_criacao": "2012-03-27", 
     "setor": { 
      "pk": 1, 
      "model": "display.setor", 
      "fields": { 
       "nome": "Valença" 
      } 
     }, 
     "janelas": 12, 
     "nome": "Shopping" 
    } 
} 
] 

Как группировать эти два дисплея в одном «Setor «?

Редактирование:

Использование Django Framework можно перегруппировать атрибуты:

# queryset 

displays = Display.objects.filter(janelas__lte=12).select_related('setor').order_by('setor__nome') 

# template 

{% regroup displays by setor as setor_list %} 

<ul> 
{% for s in setor_list %} 
<li>{{ s.grouper }} 
<ul> 
    {% for d in s.list %} 
    <li>{{ d.nome }}</li> 
    {% endfor %} 
</ul> 
</li> 
{% endfor %} 
</ul> 

The DOC:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#regroup

Также попробуйте сделать через Jquery.
Спасибо!

+0

Было бы лучше, если бы вы могли сделать это на стороне сервера. – bfavaretto

ответ

0

Вы можете создать новый объект из имеющихся данных

var tmp = {}; 

$.each(data, function(i, item) { 
    var nome = item.fields.setor.fields.nome; 
    if (!tmp[nome]) { 
     tmp[nome] = []; 
    } 
    tmp[nome].push(item); 

}); 

Затем перебирает новый объект для генерации HTML

Не знаю, как вы хотели, список разделенные таким образом я использовал H3 тег, и я не сделал включают в себя все переменные, вы разборе:

var html = []; 
$.each(tmp, function(key, item) { 
    html.push('<h3>' + key + '</h3><ul>'); 
    $.each(item, function(i, val) { 
     html.push('<li>' + 'pk:' + val.pk + ', nome:' + val.fields.nome + '</li>') 
    }) 
    html.push('</ul>'); 
}); 
$('.sidebar').append(html.join('')); 

Демо: http://jsfiddle.net/xrtpD/1/

+0

Спасибо за код charlietfl! Я скоро попробую ваш код. Я сделал это на стороне сервера, следуя коду. – LinuxMan

Смежные вопросы