Django prefetch_related для объединения "многие ко многим" не работает
У меня есть отношение "многие ко многим" к моделям.
Продукт может иметь множество изображений, и изображение может быть присвоено нескольким производствам.
это мой тип модели :
from django.db import models
class Image(models.Model):
image_id = models.AutoField(primary_key=True)
image_name = models.TextField(max_length=200)
class Product(models.Model):
product_id = models.AutoField(primary_key=True)
product_name = models.TextField(max_length=200)
image = models.ManyToManyField(Image, related_name="image")
а в представлении я заполняю модель следующим образом :
def home(self):
"""Renders the home page."""
assert isinstance(self, HttpRequest)
all_product = Product.objects.prefetch_related('image').all()
return render(
self,
'app/index.html',
{
'all_product': all_product
}
)
и в моем шаблоне, если я вызову модель следующим образом :
{% for each_model in all_product %}
<label> {{each_model.product_id}}</label>
<label> {{each_model.image.image_id}}</label>
{% endfor %}
отображаются только товары, а не объединенные значения из таблицы manyTomany.
{% for each_model in all_product %}
<label> {{each_model.product_id}}</label>
{% for image in each_model.image %}
{{ image.image_id }}
{% endfor %}
{% endfor %}
Как я уже упоминал в своем комментарии. Вы должны выполнить цикл each_model.image
, а затем обратиться к image_id