Отображать изображения в списке в HTML - PullRequest
0 голосов
/ 18 июня 2020

Я хочу отобразить в виде списка все мои лекарства. Я беру значения из базы данных mysql. Но я не могу отображать изображения.

Я получаю бессмысленный вывод типа b '\ xff \ xd8 \ xff \ xe0 \ x00 \ x10JFIF \ x00 \ x01 \ x01 ... вместо изображений.

Вот мой код. Как это исправить?

models.py

class Medicine(models.Model):

    #user = models.TextField(User)

    medicine_name = models.CharField(max_length=100)
    medicine_info = RichTextField(verbose_name="notes")
    medicine_code = models.CharField(max_length=100)
    medicine_price = models.IntegerField()
    medicine_stock = models.IntegerField()
    medicine_image = models.ImageField(null=True, blank=True)

    def get_image(self):
        if self.medicine_image and hasattr(self.img_photo, 'url'):
            return self.medicine_image.url
        else:
            return

    def __str__(self):
        return self.medicine_name

    class Meta:
        ordering = ['medicine_name']

views.py

def list_item(request):
    medicines = Medicine.objects.filter()
    return render(request, 'medicine_list.html', {'medicines': medicines})

список_ лекарств. html

  <table class='table'>
        <thead>
          <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Info</th>
            <th>Barcode</th>
            <th>Stock</th>
            <th>Image</th>
          </tr>
        </thead>
      {% for medicine in medicines %}
          <tr>
            <td>{{medicine.id }}</td>
            <td>{{ medicine.medicine_name }}</td>
            <td>{{ medicine.medicine_info }}</td>
            <td>{{ medicine.medicine_code }}</td>
            <td>{{ medicine.medicine_price }}</td>
            <td>{{ medicine.medicine_image }}</td>
          </tr>
      {% endfor %}
    </table>

1 Ответ

0 голосов
/ 18 июня 2020

В своей функции get_image вы проверяете, имеет ли self.img_photo определенный атрибут, но проблема в том, что self.img_photo не существует, поэтому инструкция else выполняется и ничего не возвращает.

Ваша функция должен выглядеть следующим образом:

def get_image(self):
        if self.medicine_image and hasattr(self.medicine_image, 'url'):
            return self.medicine_image.url
        else:
            # return whatever you want here

Я также рекомендую указать значение upload_to для вашего изображения следующим образом:

medicine_image = models.ImageField(upload_to='images', null=True, blank=True)

Обратите внимание, что «изображения» могут быть тем, что вы хотите.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...