No problem. The most probable reason why you're getting the invalid filter
error is because you forgot to load the filters.
Your explanation of the workflow is correct, with one small correction. The
template will handoff the search for the correct *Score* to the filter
function. Whatever the filter function returns will then be inserted in
place of the {scores|from_player:person} part in your template. One way of
getting the correct score would be to loop over the items in your scores
dictionary, and find the one where the identification numbers match. One
suggestion, instead of returning a dictionary from your filter function,
you should return the value you want to display. So maybe your filter can
look something like:
def get_score_for_person(scores, person):
for s in scores:
if s['Number'] == p.Number:
return s['Score']
And you're right, maybe you can rename the filter to be get_score_for_person
if that is more clear for your application.
On Monday, August 29, 2016 at 8:12:56 PM UTC+4, Aaron Weisberg wrote:
>
> Thanks Asad. Is that why I'm getting errors saying invalid filter name?
>
> Also I'm having a difficult time thinking my way through the workflow. I'm
> defining a new function that requires scores(my URL based dictionary) and
> person (my database dictionary). The function then asks to return the
> scores of the corresponding game number. Then the template is looking for
> the correct value in the scores dictionary that has the same Number
> identification as the existing person.Number?
>
> I think what is confusing me is the use of "player" in ludovics example
>
> Thanks
>
> Aaron
>
> On Aug 29, 2016 11:53 AM, "Asad Jibran Ahmed" <[email protected]
> <javascript:>> wrote:
>
>> No need to change the context, since the variable names the example here
>> uses are the same as your existing context. It should work as long as you
>> remember to {% load APPNAME %} your filters in the template first.
>>
>>
>> Asad Jibran Ahmed <[email protected] <javascript:>>
>> http://blog.asadjb.com
>>
>> On Mon, Aug 29, 2016 at 6:50 PM, Aaron Weisberg <[email protected]
>> <javascript:>> wrote:
>>
>>> Thanks ludovic,
>>>
>>> I'm trying to write that python code presently- would I have to also
>>> change the context? how would that look?
>>>
>>> Thanks
>>>
>>> On Fri, Aug 26, 2016 at 10:40 AM, ludovic coues <[email protected]
>>> <javascript:>> wrote:
>>>
>>>> You could write a filter [1]. It would be used like {{
>>>> scores|from_player:person }} and look like that:
>>>>
>>>> def from_player (scores, player):
>>>> return scores[player.Number]
>>>>
>>>> You might want to adjust to your actual code, check that you got the
>>>> right arguments and that kind of things.
>>>>
>>>> [1] https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/
>>>>
>>>> 2016-08-26 15:50 GMT+02:00 Aaron Weisberg <[email protected]
>>>> <javascript:>>:
>>>> > I didn't really know how to label this question, but I think it's an
>>>> > interesting concept and I haven't seen a resolution anywhere else.
>>>> >
>>>> > I currently have two different dictionaries as context for a template:
>>>> >
>>>> > Enter code here...context ={
>>>> > 'person':person,
>>>> > 'scores':scores,
>>>> > }
>>>> >
>>>> >
>>>> > Each of these dictionaries has a common key (person.Number),
>>>> > (scores.Number), however the person dictionary is based off of a
>>>> model in my
>>>> > django database, while scores comes from a json feed that I parse
>>>> through:
>>>> >
>>>> > I currently run through a table in a template that looks like this:
>>>> >
>>>> > Enter code here...<table class="table">
>>>> > <thead>
>>>> > <tr>
>>>> > <th>Person</th>
>>>> > <th>Person Number</th>
>>>> > <th>First Name</th>
>>>> > <th>Last Name </th>
>>>> > <th> City </th>
>>>> > <th> Score</th>
>>>> > </tr>
>>>> > </thead>
>>>> > <tbody>
>>>> > {% for person in persons %}
>>>> > <tr>
>>>> > <td>{{ person.Number }}</td>
>>>> > <td>{{ person.firstName }}</td>
>>>> >
>>>> <td>{{
>>>> > person.lastName }}</td>
>>>> >
>>>> <td>{{
>>>> > person.city }}</td>
>>>> >
>>>> > <td>??'''scores.score1 goes here'''</td>
>>>> >
>>>> > {% endfor %}
>>>> >
>>>> > </table>
>>>> >
>>>> > What I'm trying to figure out to do is figure out how to get that
>>>> final
>>>> > detail loaded into the table where we would find the score specific
>>>> to that
>>>> > person.Number. In other words how to go through my scores dictionary
>>>> in
>>>> > this template and find the corresponding score1 using the
>>>> person.Number from
>>>> > the other dictionary as the value.
>>>> >
>>>> >
>>>> > Let me know if you have any ideas.
>>>> >
>>>> > Thanks.
>>>> >
>>>> >
>>>> > --
>>>> > 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/d05c8fc4-706b-422b-bc11-b656f1950dea%40googlegroups.com
>>>> .
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Cordialement, Coues Ludovic
>>>> +336 148 743 42
>>>>
>>>> --
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "Django users" group.
>>>> To unsubscribe from this topic, visit
>>>> https://groups.google.com/d/topic/django-users/UlgghbsoqYI/unsubscribe.
>>>> To unsubscribe from this group and all its topics, 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/CAEuG%2BTatGSwstRkfEDpZdeB6yMv2BobiaQ_Zb3CEL7ZXr5kE-g%40mail.gmail.com
>>>> .
>>>> 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] <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/CAL5RJ55RzR6MuwXS-ARFKKDb948ijOW9jfp27Th76Xt006%3D_5g%40mail.gmail.com
>>>
>>> <https://groups.google.com/d/msgid/django-users/CAL5RJ55RzR6MuwXS-ARFKKDb948ijOW9jfp27Th76Xt006%3D_5g%40mail.gmail.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 a topic in the
>> Google Groups "Django users" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/django-users/UlgghbsoqYI/unsubscribe.
>> To unsubscribe from this group and all its topics, 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/CA%2BYYaWequ_C-hAGkMWWjg1R8MWxXk%3DLwitdP1M92hGGy0B%2BYrg%40mail.gmail.com
>>
>> <https://groups.google.com/d/msgid/django-users/CA%2BYYaWequ_C-hAGkMWWjg1R8MWxXk%3DLwitdP1M92hGGy0B%2BYrg%40mail.gmail.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/2e91d72f-f6b0-4a63-8fc3-88f58be2ca30%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.