Существует две модели Product и ProductImage. Мой код выглядит следующим образом:
models.py
class Product(models.Model):
product_name = models.CharField(max_length=100)
product_weight = models.CharField(max_length=30)
models.py
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver
_UNSAVED_IMAGEFIELD = 'unsaved_imagefield'
def upload_path_handler(instance, filename):
import os.path
fn, ext = os.path.splitext(filename)
return "images/{id}/{fname}".format(id=instance.product_id,
fname=filename)
class ProductImage(models.Model):
product = models.ForeignKey(Product, on_delete=models.DO_NOTHING)
image = models.ImageField(upload_to=upload_path_handler, blank=True)
@receiver(pre_save, sender=ProductImage)
def skip_saving_file(sender, instance, **kwargs):
if not instance.pk and not hasattr(instance, _UNSAVED_IMAGEFIELD):
setattr(instance, _UNSAVED_IMAGEFIELD, instance.image)
instance.image = None
@receiver(post_save, sender=ProductImage)
def update_file_url(sender, instance, created, **kwargs):
if created and hasattr(instance, _UNSAVED_IMAGEFIELD):
instance.image = getattr(instance, _UNSAVED_IMAGEFIELD)
instance.save()
views.py
def products(request):
products = Product.objects.all()
context = {
'products' : products
}
return render(request, 'products/products.html', context)
products. html
{% if products %}
{% for product in produucts %}
<div class="col-sm-5 col-lg-5">
<div class="equipmentbox">
<div class="equipmentimgbox"> <img src="{{"**IMAGE URL HERE**"}}"> </div>
<a href="">{{ product.product_name }}</a>
</div>
</div>
{% endfor %}
{% else %}
<div class="col-md-12">
<p>No Products Available</p>
</div>
{% endif %}
Таблица продукта содержит информацию о продукте, а ProductImage содержит изображения, связанные с конкретным продуктом. У меня есть страница со списком, где я хочу отобразить ProductTitle и Image. Как я могу получить изображение из другой таблицы и отобразить его с названием продукта.
Заранее спасибо.