KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm having an odd problem using itertools.groupby to group the elements of a queryset. I have a model Resource : from django.db import models TYPE_CHOICES = ( ('event', 'Event Room'), ('meet', 'Meeting Room'), # etc ) class Resource(models.Model): name = models.CharField(max_length=30) type = models.CharField(max_length=5, choices=TYPE_CHOICES) # other stuff I have a couple of resources in my sqlite database: >>> from myapp.models import Resource >>> r = Resource.objects.all() >>> len(r) 3 >>> r[0].type u'event' >>> r[1].type u'meet' >>> r[2].type u'meet' So if I group by type, I naturally get two tuples: >>> from itertools import groupby >>> g = groupby(r, lambda resource: resource.type) >>> for type, resources in g: ... print type ... for resource in resources: ... print '\t%s' % resource event resourcex meet resourcey resourcez Now I have the same logic in my view: class DayView(DayArchiveView): def get_context_data(self, *args, **kwargs): context = super(DayView, self).get_context_data(*args, **kwargs) types = dict(TYPE_CHOICES) context['resource_list'] = groupby(Resource.objects.all(), lambda r: types[r.type]) return context But when I iterate over this in my template, some resources are missing: <select multiple="multiple" name="resources"> {% for type, resources in resource_list %} <option disabled="disabled">{{ type }}</option> {% for resource in resources %} <option value="{{ resource.id }}">{{ resource.name }}</option> {% endfor %} {% endfor %} </select> This renders as: <img src="https://i.sstatic.net/k15h8.png" alt="select multiple
Tags (comma-separated)
Save Edits
Cancel