Это одна из многих причин, почему вы должны не использовать .values()
. Если вы передадите Exercise
модели, вы можете получить связанный объект в память. Вы можете использовать .select_related(..)
для оптимизации запроса:
exercises = Exercise.objects.filter(
category=exercisedetailcategory
).select_related('body_part')
context = {
'exercises' : exercises,
}
return render(request, 'exercises-categories.html', context)
Затем в шаблоне мы можем отобразить это с помощью:
{% for exercise in exercises %}
<span class="post-meta-category"><a href="">{{ exercise<b>.body_part.body_part</b> }}</a></span>
<div class="post-item-description">
<a href="">{{ exercise.title }}</a>
<p>{{ exercise.content }}</p>
{% endfor %}
Более того, вы можете реализовать __str__
метод для BodyPart
:
class BodyPart(models.Model):
body_part = models.CharField(max_length=20, unique=True)
def <b>__str__</b>(self):
return self.body_part
, а затем отобразить это с помощью:
{% for exercise in exercises %}
<span class="post-meta-category"><a href="">{{ exercise<b>.body_part</b> }}</a></span>
<div class="post-item-description">
<a href="">{{ exercise.title }}</a>
<p>{{ exercise.content }}</p>
{% endfor %}