добавление нескольких изображений в модель django

#python #django

#python #django

Вопрос:

Я пытаюсь добавить несколько изображений в модель django, это работает в admin, но я совершенно не понимаю, как показать это в моем шаблоне. вот что я попробовал, это не выдает никаких ошибок, но изображение не отображается.

models.py

 class Export_Trade_Data(models.Model):
    country = models.ForeignKey(
        BannerandInformation, on_delete=models.CASCADE, null=True)
    # country_name = models.CharField('Country Name', max_length=100, default='')
    trade_text = models.TextField('Text for Trade Data', null=True)
    # date added
    date_added = models.DateTimeField('Date Updated', auto_now=True)

    def __str__(self):
        return "Export Trade Data"


class ExportImage(models.Model):
    country = models.ForeignKey(
        BannerandInformation, on_delete=models.CASCADE, null=True)
    export_trade_data = models.ForeignKey(Export_Trade_Data, on_delete=models.CASCADE)
    export_sample_image = models.ImageField(
        'Export Sample Image', upload_to='country', null=True)
    def __str__(self):
        return "Export Trade Data"
  

views.py

 def country(request, country):
    exch_val = ''
    banners = BannerandInformation.objects.filter(country=country)
    for b in banners:
        country_name = b
        exch_r = b.exch_rate
        exch_cur = exch_r.split("/")[0]

######Export_Trade_Data Model#######
    etrds = Export_Trade_Data.objects.filter(country_id=ct_id)
######ExportImage Model#######
    expics = ExportImage.objects.filter(country_id=ct_id)
    for s in expics:
        etd_pic = s.export_sample_image

    content = {
        "etrds": etrds,
        "etd_pic": etd_pic,

    }
    return render(request, 'country/country-page.html', content)
  

country-page.html

 <tbody>
  {% for expics in etrds %}
  <tr>
    <img src="/country/{{expics.export_sample_image}}" height="604px" width="527px" alt="">
  </tr>
  {% endfor %}
</tbody>
  

Комментарии:

1. можете ли вы показать, что шаблон получает из представления? например, массив объектов изображения или просто один объект или что-то в этом роде

Ответ №1:

Пока у вас есть соответствующий ExportImage набор запросов в контексте, вы должны иметь возможность отображать его таким образом:

   {% for ei in export_images %}
    <img src="{{ei.export_sample_image.url}}">
  {% endfor %}
  

Однако, видя ваш код представления, неясно, что вы пытаетесь там сделать. Я предлагаю вам переписать его. Часть, которая должна получать ваши изображения, будет выглядеть следующим образом:

 def country(request, country_id):
    export_images = ExportImage.objects.filter(country_id=country_id)
    return render(request, 
                  'country/country-page.html', 
                  {'export_images': export_images})