Не удалось разобрать остаток: '{%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