Django ManyToManyField информация из связанной модели в шаблоне
Подскажите, пожалуйста, как вывести информацию из связанной модели в шаблоне?
models
class Cars(models.Model):
brand = models.CharField(max_length=30)
class Engine(models.Model):
engine = models.CharField(max_length=30)
cars = models.ManyToManyField(Cars, verbose_name="cars", related_name='cars_rn')
views
class EngineView(DetailView):
model = Engine
template_name = 'cars/engine_detail.html'
slug_field = 'engine_url'
template
{% block content %}
{{ engine.engine }} <! -- Работает -->
{% for car in engine.cars_rn.all %}
{{ car.brand }} <! -- Не работает -->
{% endfor %}
{% endblock content %}
Ответы (1 шт):
Автор решения: Muck Son
→ Ссылка
Вы не поняли логику related_name. В related_name вы указываете имя "обратного обращения", то есть из Cars к Engine. Таким образом, ваш класс Engine должен выглядеть так:
class Engine(models.Model):
engine = models.CharField(max_length=30)
cars = models.ManyToManyField(Cars, verbose_name="cars", related_name='engines')
Теперь вы можете писать так:
car.engines.all()
И это будет работать.
Чтобы сделать выборку всех Car из Engine, нужно писать так:
{% for car in engine.cars.all %}
{{ car.brand }}
{% endfor %}