Django Подключение изображения с именем продукта от администратора

Эй, я надеюсь, что кто-нибудь сможет мне помочь.

Я работаю над сайтом электронной коммерции, я могу добавить каждый продукт от db Admin до django, но я не могу добавить изображение, в настоящее время код добавляет одно и то же изображение к каждому продукту.

{% for Product in oldProducts %}
    <div class="col-lg-4">
      <img class="img-circle" src="{% static "ecommerce/img/weightgain2.png" %}" alt="Generic placeholder image" width="140" height="140">
      <h2>{{ Product.Name }}</h2>
      <p>{{ Product.Price }} </br> {{ Product.Description }}</p>
      <form method='POST' action="{% url 'ecommerce:addbasket' %}">
      {% csrf_token %}
      <input type="hidden" name="stuffNum" value="{{ Product.ProductID }}">
      <input type="hidden" name="stuffName" value="{{ Product.Name }}">
      <input type="hidden" name="stuffPri" value="{{ Product.Price }}">
      <input type="hidden" name="stuffDesc" value="{{ Product.Description }}">
      <button class="btn btn-default" type="submit">Add To Basket</button>
      </form>
    </div><!-- /.col-lg-4 -->
    {% endfor %}

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

class Product(models.Model):
ProductID = models.AutoField(db_column='ProductId', primary_key=True)  # Field name made lowercase.
Name = models.CharField(db_column='Name', max_length=255, blank=True, null=True)  # Field name made lowercase.
Price = models.TextField(db_column='Price', blank=True, null=True)  # Field name made lowercase. This field type is a guess.
Description = models.TextField(db_column='Description', blank=True, null=True)  # Field name made lowercase.
Image = models.TextField(db_column='Image', blank=True, null=True)  # Field name made lowercase.

1 ответ

Решение

Вы используете Textfield вместо ImageField вот почему вы не можете выбрать изображение для загрузки.

Лучше изменить на это:

class Product(models.Model):
    ProductID = models.AutoField(db_column='ProductId', primary_key=True)
    Name = models.CharField(db_column='Name', max_length=255, blank=True, null=True)
    Price = models.TextField(db_column='Price', blank=True, null=True)
    Description = models.TextField(db_column='Description', blank=True, null=True)
    Image = models.ImageField(upload_to='path/to/dir/for/images/', db_column='Image', blank=True, null=True)

Тогда в своем HTML напишите это так:

{% for Product in oldProducts %}
    <div class="col-lg-4">
        <img class="img-circle" src={{ Product.Image.url }} alt="Generic placeholder image" width="140" height="140">
        ...
   </div>
{% endfor %}

[PYTHON NOTES]: пожалуйста, используйте product_id вместо ProductID и т. д. Используйте соглашение о случаях змей Это Python, а не JS;)

Читайте больше на ImageField или поиск в Google для получения дополнительной информации.

Другие вопросы по тегам