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.

Cheers,
Malcolm


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to