I would probably even simplify the code. Apparently, there’s a setting called
TEMPLATE_STRING_IF_INVALID
def getattribute(value, arg):
"""Gets an attribute of an object dynamically from a string name"""
return getattr(value, arg, settings.TEMPLATE_STRING_IF_INVALID) or
settings.TEMPLATE_STRING_IF_INVALID
From: [email protected] [mailto:[email protected]] On
Behalf Of Mikkel Kromann
Sent: Friday, June 15, 2018 6:36 AM
To: Django users
Subject: Re: Nested for loops in templates
Thanks Matthew.
The field_list is a list strings containnig the field names hardcoded in
Models.py by the programmer.
I.e. the field names that shoud appear in the Class Based Views.
So, perhaps this answers my question to Vijay - that the row in the iteration
is in fact the Model object.
And that I can get the contents of the field specified by the contents of the
"field" string using getattr()
And since (unless the programmer entered wrong values for the field names, I
can use a simplified version of the filter, e.g.:
def getattribute(value, arg):
"""Gets an attribute of an object dynamically from a string name"""
if hasattr(value, str(arg)):
return getattr(value, arg)
else
return ""
thanks, Mikkel
torsdag den 14. juni 2018 kl. 00.19.24 UTC+2 skrev Matthew Pava:
field is a string – a name of a field, field is not actually an attribute of
row. You’ll need a template tag to get the attribute named field from row.
This StackOverflow question may help you:
https://stackoverflow.com/questions/844746/performing-a-getattr-style-lookup-in-a-django-template?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
From: [email protected]<javascript:>
[mailto:[email protected]<javascript:>] On Behalf Of Mikkel Kromann
Sent: Wednesday, June 13, 2018 3:54 PM
To: Django users
Subject: Nested for loops in templates
Dear Django users.
Thanks to the good advice of many people on this list, I've managed to create
some nice generic class based views that work simultaneously with many models.
The models may differ from each other with regards to the number of columns in
their data tables as well as the naming of the columns.
In order to use the same ListView template for many models, I will need to
iterate not only over the rows of the queries, but also the columns.
I managed to pass a field_list into the context_data - it works as it shows
nicely in the table headers.
However, when I iterate over the rows of the query result table, I'm not able
to pinpoint the fields of the data row using the field iterator.
My template.html is:
<table>
<tr>
{% for fields in field_list %}
<th>{{field}}
{% endfor %}
{% for row in row_list %}
<tr>
{% for field in field_list %}
<td>{{row.field}}
{% endfor %}
{% endfor %}
</table>
Besides trying with {{row.field}}, I've tried with {{row}}.{{field}}, as well
as {{ row.{{field}} }} (yeah, long shot ...)
Any ideas, or should I try to create an entirely different data structure in my
view, which can be parsed more easily by Django templates?
cheers + thanks, Mikkel
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected]<javascript:>.
To post to this group, send email to [email protected]<javascript:>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/c9e29d66-f93c-4fc4-ae9f-dbeae93a2e45%40googlegroups.com<https://groups.google.com/d/msgid/django-users/c9e29d66-f93c-4fc4-ae9f-dbeae93a2e45%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
[email protected]<mailto:[email protected]>.
To post to this group, send email to
[email protected]<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/2bf96986-c977-49bb-b71a-6d789a1c996b%40googlegroups.com<https://groups.google.com/d/msgid/django-users/2bf96986-c977-49bb-b71a-6d789a1c996b%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/668f062779e5458e8da0e5377197cca1%40ISS1.ISS.LOCAL.
For more options, visit https://groups.google.com/d/optout.