в шаблон передаю словарь такого вида: data{id:info{}}. То есть словарь со словарями. В первом словаре ключ - это id в БД, в словаре, который доступен по этому ключу - вся информация о канале. Конкретный пример:
data{1:{'name':'channelname', 'state':True}}
В шаблоне творится АД:
{% for id,info in data.items %} {% if info.state %} <tr bgcolor="#9dde8c"> {% else %} <tr bgcolor="#f89090"> {% endif %} ...тут ничего интересного: из info по ключу достаём данные и заполняем таблицу... {% endfor %}
В целом, хрен бы с ним, но нужно в табличе сортировать всё по id, а оно выводится вразнобой. Да, словарь. Понимаю, тут претензий нет, но как отсортировать словарь внутри шаблона?
Собственно, данные из базы я забираю ещё более диким образом, наверное я просто не умею работать с базой, но…
Вот модель:
class Channels(models.Model): name = models.CharField(max_length=100) group_name = models.CharField(max_length=100) ip = models.TextField(max_length=16) port = models.IntegerField(max_length=5) screenpath = models.CharField(max_length=900) state = models.BooleanField() def __unicode__(self): return '%s %s %s %s %s %s %s' % (self.id, self.name, self.group_name, self.ip, self.port, self.screenpath, self.state)
Вот функция из viev.py:
def index(request): data = {} for i in ch.objects.all().order_by('id'): info = {} raw_data = str(i).split(' ') dbid = raw_data[0] info['id'] = dbid info['name'] = raw_data[1] info['group_name'] = raw_data[2] info['ip'] = raw_data[3] info['port'] = raw_data[4] info['screenpath'] = raw_data[5] if raw_data[6] == 'True': info['state'] = True else: info['state'] = False data[dbid] = info t = get_template('index.html') html = t.render(Context({'data': data})) return HttpResponse(html)
Ещё раз формулирую конкретные вопросы:
Как правильно отдавать шаблону всю кучу данных из базы?
Как работать со словарём в шаблоне? В частности: как отсортировать его по ключу? Или как обойтись без словаря?
