On Thu, May 19, 2011 at 1:07 PM, Geoff Kuenning <[email protected]> wrote:
> Thanks, Tom, that was HUGELY helpful! I had been thinking about using
> a filter expression, but it's so much easier to have sample code.
>
> I have another question, though (not just for Tom). The article Tom
> linked to
> (http://groups.google.com/group/django-users/browse_thread/thread/
> 6f4b7d95e4d0c810/abd10cb039f1f68c?show_docid=abd10cb039f1f68c&pli=1)
> says that the Django developers consider this approach poor style
> because the template is doing too much work. Can somebody point me to
> some hints about a more Django-ish way to accomplish the same result?
> (Basically, what I want is for the view to define the titles and
> ordering of table columns, with the contents taken from a database
> query. Obviously I could just loop through the whole durned query by
> row and column, rebuilding it into a 2-D array, but that seems
> clumsy...)
>
It was me I linked to, so I feel I should reply :)
I either do it the clumsy way, building a 2D array, or I use a
'custom' filter (it's not that custom, it's a pretty generic tool to
have) to access the values, as described before.
I suppose a more elegant solution would be to write a generator which
produces each new row with the elements in the right order. Something
like this would work:
def table_qs_generator(queryset, columns):
yield columns
for obj in queryset:
# generate row_data from obj and columns
yield row_data
return render('foo.html', { 'table_data': table_qs_generator(qs, cols) }
This avoids the nastiness of generating the entire table in memory.
Cheers
Tom
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.