Не удалось разобрать остаток: '{%get(gender='F')%}.fullname' from 'x.parent.{%get(gender='F')%}.fullname'

У меня проблема с получением данных в шаблоне. Я пишу код в файле python, он работает.

        students = Student.objects.all()
  for x in students:
    print(x.parent.get(gender='M').fullname)

это меня заводитParent Fullname, но когда я пишу это в шаблоне, например:

      {% for x in students %}
  <td class="small d-none d-xl-table-cell  text-center">{{ x.parent.{%get(gender='F')%}.fullname }}</td>
{% endfor %}

это меня заводитCould not parse the remainder: '{%get(gender='F')%}.fullname' from 'x.parent.{%get(gender='F')%}.fullname'ошибка. Я пытался написать это как{{ x.parent.get(gender='F').fullname }}но я получаю ту же ошибку

Тот же код работает в файле python, но не работает в шаблоне.

1 ответ

Вы не можете этого сделать: язык шаблонов Django намеренно ограничен, чтобы люди не могли писать бизнес-логику в шаблоне.

Вы можете определить это вStudentмодель:

      class Student(models.Model):
    # …

    @property
    def mother(self):
        return self.parent.get(gender='F')

    @property
    def father(self):
        return self.parent.get(gender='M')

Затем вы используете:

{{ х .мать }}

в шаблоне.


Примечание : related_name=… [Django-doc] — это имя менеджера для извлечения связанных объектов в обратном порядке. Поэтому обычноrelated_nameизForeignKeyилиManyToManyFieldво множественном числе , напримерparentsвместо parent.

Другие вопросы по тегам