Access a queryset's 'values_list' in Django template
up vote
1
down vote
favorite
I am trying to access the values_list
of a query_set in a template.
In a view I have used the following if statement to determine whether an Outcome
(model) exists for a given Participant
(model):
if not form.cleaned_data['timepoint'] in patient.outcome_set.values_list('timepoint', flat=True):
This worked perfectly - now I want to be able to do something similar with the values_list
in a template. However, when I try to limit the values_list
to just the timepoint
variable on the model, it throws a TemplateSyntaxError
Could not parse the remainder: '('template')' from 'patient.outcome_set.values_list('template')'
If I print the values_list
to the screen using {{ patient.outcome_set.values_list }}
it prints all the values of each outcome fine, but I can't work out how to limit the values_list to just the timepoint variable.
Current template:
<table>
<thead>
<tr>
<th>Patient</th>
<th>Baseline</th>
<th>Follow-up</th>
</tr>
</thead>
<tbody>
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
{% if 'followup' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
django django-templates django-views
add a comment |
up vote
1
down vote
favorite
I am trying to access the values_list
of a query_set in a template.
In a view I have used the following if statement to determine whether an Outcome
(model) exists for a given Participant
(model):
if not form.cleaned_data['timepoint'] in patient.outcome_set.values_list('timepoint', flat=True):
This worked perfectly - now I want to be able to do something similar with the values_list
in a template. However, when I try to limit the values_list
to just the timepoint
variable on the model, it throws a TemplateSyntaxError
Could not parse the remainder: '('template')' from 'patient.outcome_set.values_list('template')'
If I print the values_list
to the screen using {{ patient.outcome_set.values_list }}
it prints all the values of each outcome fine, but I can't work out how to limit the values_list to just the timepoint variable.
Current template:
<table>
<thead>
<tr>
<th>Patient</th>
<th>Baseline</th>
<th>Follow-up</th>
</tr>
</thead>
<tbody>
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
{% if 'followup' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
django django-templates django-views
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I am trying to access the values_list
of a query_set in a template.
In a view I have used the following if statement to determine whether an Outcome
(model) exists for a given Participant
(model):
if not form.cleaned_data['timepoint'] in patient.outcome_set.values_list('timepoint', flat=True):
This worked perfectly - now I want to be able to do something similar with the values_list
in a template. However, when I try to limit the values_list
to just the timepoint
variable on the model, it throws a TemplateSyntaxError
Could not parse the remainder: '('template')' from 'patient.outcome_set.values_list('template')'
If I print the values_list
to the screen using {{ patient.outcome_set.values_list }}
it prints all the values of each outcome fine, but I can't work out how to limit the values_list to just the timepoint variable.
Current template:
<table>
<thead>
<tr>
<th>Patient</th>
<th>Baseline</th>
<th>Follow-up</th>
</tr>
</thead>
<tbody>
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
{% if 'followup' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
django django-templates django-views
I am trying to access the values_list
of a query_set in a template.
In a view I have used the following if statement to determine whether an Outcome
(model) exists for a given Participant
(model):
if not form.cleaned_data['timepoint'] in patient.outcome_set.values_list('timepoint', flat=True):
This worked perfectly - now I want to be able to do something similar with the values_list
in a template. However, when I try to limit the values_list
to just the timepoint
variable on the model, it throws a TemplateSyntaxError
Could not parse the remainder: '('template')' from 'patient.outcome_set.values_list('template')'
If I print the values_list
to the screen using {{ patient.outcome_set.values_list }}
it prints all the values of each outcome fine, but I can't work out how to limit the values_list to just the timepoint variable.
Current template:
<table>
<thead>
<tr>
<th>Patient</th>
<th>Baseline</th>
<th>Follow-up</th>
</tr>
</thead>
<tbody>
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
{% if 'followup' in patient.outcome_set.values_list('timepoint') %}
<td>INSERT TICK</td>
{% else %}
<td>INSERT CROSS</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
django django-templates django-views
django django-templates django-views
asked Nov 20 at 5:31
Braden
8011
8011
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
Though this kind of logic is more suited in views, you can use a custom template tag for this. Something like below.
# extra_tags.py
@register.filter
def get_value_in_qs(queryset, key):
return queryset.values(key, flat=True)
Then you can use it in your template in this way:
{% load extra_tags %}
...
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set|get_value_in_qs:'timepoint' %}
# or for better readability use a with tag
{% with patient_timepoint=patient.outcome_set|get_value_in_qs:'timepoint' %}
{% if 'baseline' in patient_timepoint %} ...
....
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
Though this kind of logic is more suited in views, you can use a custom template tag for this. Something like below.
# extra_tags.py
@register.filter
def get_value_in_qs(queryset, key):
return queryset.values(key, flat=True)
Then you can use it in your template in this way:
{% load extra_tags %}
...
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set|get_value_in_qs:'timepoint' %}
# or for better readability use a with tag
{% with patient_timepoint=patient.outcome_set|get_value_in_qs:'timepoint' %}
{% if 'baseline' in patient_timepoint %} ...
....
add a comment |
up vote
1
down vote
Though this kind of logic is more suited in views, you can use a custom template tag for this. Something like below.
# extra_tags.py
@register.filter
def get_value_in_qs(queryset, key):
return queryset.values(key, flat=True)
Then you can use it in your template in this way:
{% load extra_tags %}
...
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set|get_value_in_qs:'timepoint' %}
# or for better readability use a with tag
{% with patient_timepoint=patient.outcome_set|get_value_in_qs:'timepoint' %}
{% if 'baseline' in patient_timepoint %} ...
....
add a comment |
up vote
1
down vote
up vote
1
down vote
Though this kind of logic is more suited in views, you can use a custom template tag for this. Something like below.
# extra_tags.py
@register.filter
def get_value_in_qs(queryset, key):
return queryset.values(key, flat=True)
Then you can use it in your template in this way:
{% load extra_tags %}
...
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set|get_value_in_qs:'timepoint' %}
# or for better readability use a with tag
{% with patient_timepoint=patient.outcome_set|get_value_in_qs:'timepoint' %}
{% if 'baseline' in patient_timepoint %} ...
....
Though this kind of logic is more suited in views, you can use a custom template tag for this. Something like below.
# extra_tags.py
@register.filter
def get_value_in_qs(queryset, key):
return queryset.values(key, flat=True)
Then you can use it in your template in this way:
{% load extra_tags %}
...
{% for patient in patients %}
<tr>
<td>{{ patient.name }}</td>
{% if 'baseline' in patient.outcome_set|get_value_in_qs:'timepoint' %}
# or for better readability use a with tag
{% with patient_timepoint=patient.outcome_set|get_value_in_qs:'timepoint' %}
{% if 'baseline' in patient_timepoint %} ...
....
answered Nov 20 at 6:40
May.D
428112
428112
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386786%2faccess-a-querysets-values-list-in-django-template%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown