Hi. I did something similar to this a while back I did it via a template tag. you can read about it here: http://feh.holsman.net/articles/2006/03/08/cross-tab-tag
regards Ian. On 4/25/06, Sam Tran <[EMAIL PROTECTED]> wrote: > > On 4/24/06, Malcolm Tredinnick <[EMAIL PROTECTED]> wrote: > > > > Hi Sam, > > > > On Mon, 2006-04-24 at 15:52 -0400, Sam Tran wrote: > > > Hi All, > > > > > > I have the following list of tuples: > > > [(0, 'Jenna'), > > > (1, 'Tom'), > > > (1, 'Paul'), > > > (2, 'Cathy')] > > > > > > I want to create a table with as many row as the number of tuples (one > > > row for each tuple). The first element of each tuple is the number of > > > tabulations or empty cells to put in each row. The second element is > > > the string to write in the last cell of the row. So the resulting > > > table would look like this: > > > > > > | Jenna | > > > | | Tom | > > > | | Paul | > > > | | | Cathy | > > > > I cannot think of any way to do this directly in templates. You need to > > preprocess the data slightly. Initially, I came up with an example that > > converted your prefix numbers into lists of the same length and then > > iterated over those lists to insert </td><td> pairs. Something like > > > > converted_data = [([None] * d[0], d[1]) for d in data] > > > > in the view and > > > > {% for entry in data %} > > <tr><td> > > {% for padding in entry.0 %} > > </td><td> > > {% endfor %} > > {{ entry.1 }}</td></tr> > > {% endfor %} > > > > Then I realised this was stupid and if I was going to preprocess the > > data, I might as well just give it the right string initially. So > > > > converted_data = [('</td><td>' * d[0], d[1]) for d in data] > > > > in the view and > > > > {% for entry in data %} > > <tr><td>{{ entry.0 }}{{entry.1 }}</td></tr> > > {% endfor %} > > > > in the template. > > > > If it were possible to create a loop from a number (equivalent of > > Python's range() function), rather than iterating over a sequence, the > > first solution would work without pre-processing. But I can't say that I > > dislike the fact you cannot do this. It forces complexity out the > > templates: the temptation to use the templates as a computation engine > > would become too great otherwise. > > > > Malcom, > > I initially tried to create a loop with range() as you described. I > wanted to avoid doing some 'template' pre-processing in the view file. > But apparently there is no way to do otherwise. I will definitely try > your solution tomorrow. > > Your help is greatly appreciated. > > Best regards, > Sam > > > > -- [EMAIL PROTECTED] -- blog: http://feh.holsman.net/ -- PH: ++61-3-9818-0132 If everything seems under control, you're not going fast enough. - Mario Andretti --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users -~----------~----~----~----~------~----~------~--~---