Как получить изображение с другой модели в django

Sulthon Maulana Arrasyid спросил: 28 апреля 2018 в 08:26 в: html

Я хочу получить форму изображения Изображение для модели Продукт и показать шаблон корзины

Это мой код:

электронной коммерции / models.py
class Product(models.Model):
    name = models.CharField(max_length=200)
    content = models.TextField()
    excerpt = models.TextField()
    price = models.DecimalField(max_digits=6, decimal_places=2)
    status = models.IntegerField(default=0)
    date = models.DateTimeField(auto_now_add=True)
    quantity = models.PositiveIntegerField()
    author = models.PositiveIntegerField()
    featured_image = models.CharField(max_length=300)
    available = models.BooleanField(default=True)    def __str__(self):
        return self.nameclass Image(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    image = models.ImageField()

корзина / views.py
@require_POST
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, pk=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product,
                 quantity=cd['quantity'],
                 update_quantity=cd['update'])
    return redirect('cart:cart_detail')    def cart_detail(request):
    cart = Cart(request)
    for item in cart:
        item['update_quantity_form'] = CartAddProductForm(initial={'quantity': item['quantity'],
                                                                   'update': True})
    return render(request, 'cart_detail.html', {'cart': cart})

корзина / шаблоны / cart.html

<tbody>
        {% for item in cart %}
            {% with product=item.product %}
            <tr>
                <td>
                    {% for product in products %} 
                        <img src="{{ product.first_image.src }}" alt="" width="auto" height="340"/>
                    {% endfor %}
                </td>
                <td>{{ product.name }}</td>
                .
                .
                .
            </tr>
            {% endwith %}
        {% endfor %}
    </tbody>

Я прочитал эту ссылку

, но это бесполезно для меня, пожалуйста, помогите мне, я newby к этому

Спасибо

1 ответ

neverwalkaloner ответил: 28 апреля 2018 в 08:34

Вы должны использовать обратный поиск image_set. Чтобы получить первое изображение, выполните product.image_set.first.image.url:

<img src="{{ product.image_set.first.image.url }}" alt="" width="auto" height="340"/>

, чтобы получить все итерации изображений по image_set:

{% for image in product.image_set.all %} 
    <img src="{{ image.src }}" alt="" width="auto" height="340"/>
{% endfor %}

Обратите внимание, что вы должны удалить эту часть:

{% for product in products %} 
{% endfor %}

, поскольку вы не передаете переменную products в контекст шаблона.

Sulthon Maulana Arrasyid ответил: 05 мая 2018 в 11:05
Привет, спасибо, но это не сработало для меня, никаких ошибок, но никаких изменений