Как получить доступ к объектам как значениям по-разному для вложенного контекстного словаря в django? - PullRequest
0 голосов
/ 11 декабря 2019

Я немного новичок в Джанго, так что терпите меня. Я делаю наивный нечеткий поиск, как он работает, но в результате я получаю следующий контекст:

context = {plst : {0 : 

                       { player : playerObject; performance : PerfObject; salary : SalaryObject; socialMedia : socialMediaObject}; 
                   1: 
                       {....}; 
                   ... } }

Я получаю каждый из этих объектов с помощью таких функций, как: производительность= get_object_or_404 (PlayerPerformance, player_name = player_name), хотя я не думаю, что это имеет значение. Однако следует сказать, что каждый объект имеет несколько разные «атрибуты».

Поэтому я не думаю, что стандарт для цикла может работать.

Проблема возникает, когда я пытаюсь визуализироватьэто в player.html.

Я могу сделать это, стандартный цикл for, правильно:

{% for iter, values in plst.items %}
    <p> {{iter}} </p>
    {% for k, v in values.items %}
        <p> {{k}} : {{v}} </p>
    {% endfor %}
{% endfor %}

, что приводит к:

player : James Harden
performance : PlayerPerformance object (2)
salary : PlayerSalary object (2)
socialMedia : PlayerSocialMedia object (213)

Но это не 'я не могу получить доступ к внутренним элементам значений. Как performance.points.

Я также могу сделать это:

{% for iter, values in plst.items %}
    {% for k, v in values.items %}
        Player: {{v.age}}
    {% endfor %}
{% endfor %}

, который отображает:

Игрок: 27 Игрок: Игрок: Игрок:

Это имеет смысл, потому что только объект игрока имеет параметр "age"

Между тем это:

{% for iter, values in plst.items %}
    {% for k, v in values.items %}
        Player: {{v.player_name}}
    {% endfor %}
{% endfor %}

дает

Игрок: Джеймс Харден Игрок: Джеймс Харден Игрок:Джеймс Харден Игрок: Джеймс Харден

, потому что все четыре объекта используют имена в качестве идентификаторов, а все четыре имеют атрибут "player_name".

В идеале мне нужно что-то вроде этого:

{% for iter, values in plst.items %}
    {% for player, perf, salary, socMedia in values.items %}
        Player: {{player.player_name}}
        Age: {{player.age}}
        Position: {{player.position}}
        Points: {{perf.points}}
        Turnover: {{perf.turnover}}
        etc.
    {% endfor %}
{% endfor %}

Но, к сожалению, это не работает. Оператор if, который может различать по ключам, также может сработать, но я не могу найти, как это сделать.

Да ... Дайте мне знать, если я смогу сделать что-нибудь более ясное. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 12 декабря 2019

Смотрите комментарий. Благодарю Даниэля Розмана. Спасибо, приятель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...