Django: получить значение внешнего ключа вместо идентификатора - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь использовать значения внешнего ключа в шаблоне.

Когда я пытаюсь показать это, я правильно получаю значение на экране.

{% for x in dataset %}
    <p> {{ x.fieldname }}
{% endfor %}

Но когда я пытаюсь использовать его для сравнения, он использует идентификатор, а не значение.

{% for x in dataset %}
    {% if x.fieldname == "The name I want" %}
        <p> {{ x.fieldname }}
    {% endif %}
{% endfor %}

Я искал некоторые сообщения, касающиеся сериализаторов с этим, но (насколько я знаю), я понимаю, что сериализаторы должны отправлять или получать данные извне приложения.

Поскольку используются только значения в приложении, есть ли другой способ получить фактическое значение для сравнения? Должен ли я использовать подход сериализаторов?

Спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

Я думаю, что вы предполагаете слишком много "магии" здесь.Если вы выбираете атрибут, связанный с ForeignKey, он просто выбирает связанный экземпляр.Теперь, в случае, если вы создадите такой экземпляр, Django будет обычно использовать __str__ экземпляра модели как запасной вариант.

Итак, вам нужно выяснить, как __str__ модели, которая являетсяссылки на работы .Например, если Model использует атрибут .name для преобразования его в строку, вы можете написать:

{% if x.fieldname<b>.name</b> == "The name I want" %}

В случае, если неизвестно, как он отображается, вы можете использовать stringformat шаблон фильтра:

{% if x.fieldname<b>|stringformat:""</b> == "The name I want" %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...