У меня есть эти три модели - «Вещь» имеет связанный «Альбом», который обычно содержит три или четыре «Фото» «Вещи».Для последних девяти «Вещей» я хочу отобразить первую фотографию вещи из «Альбома» вместе с другими деталями вещи (например, название, страна изготовления), используя шаблон под названием «headquarters.html».
Ниже приведены мои модели:
class Thing(models.Model):
name = models.CharField(verbose_name = "Item", max_length = 60)
price = models.DecimalField(max_digits = 5, decimal_places = 2)
country_of_manufacture = models.CharField(verbose_name = "Country of Manufacture", max_length = 40)
created_on = models.DateTimeField(verbose_name = "Creation Date", default = django.utils.timezone.now, editable = False)
album = models.OneToOneField(Album, on_delete = models.CASCADE, null = True)
def __str__(self):
return self.name
class Album(models.Model):
name = models.CharField(verbose_name = "Photo Album", max_length = 60)
created_on = models.DateTimeField(verbose_name = "Creation Date", default = django.utils.timezone.now, editable = False)
def __str__(self):
return self.name
class Photo(models.Model):
photo_identity = models.ImageField(blank = True, null = True, upload_to="media/%Y/%m/%d/")
photo_in = models.ForeignKey(Album, on_delete = models.PROTECT)
uploaded_on = models.DateTimeField(verbose_name = "Creation Date", default = django.utils.timezone.now, editable = False)
def __str__(self):
return '%s -- (%s)' % (self.photo_in.name + " Album", self.photo_identity)
Это мой view.py:
def headquarters(request, *args, **kwargs):
last_nine = Thing.objects.all().order_by('-id')[:9]
mylist = []
for thing in last_nine:
mylist.append (thing.album.photo_set.first().photo_identity)
return render(request, 'headquarters.html', {"nine_items" : last_nine, "URL_list" : mylist})
Это мой шаблон (headquarters.html):
{% for item in nine_items %}
<div class="col-lg-4 col-sm-6 portfolio-item">
<div class="card h-100">
<a href="http://localhost:8000/view_a_thing/{{item.id}}/"><img class="card-img-top" src="{{ **what_do_put_in_here** }}" alt=""></a>
<div class="card-body">
<h4 class="card-title">
<a href="http://localhost:8000/view_a_thing/{{item.id}}">{{item.name}}</a>
</h4>
<p class="card-text">Brand: {{item.brand}}</p>
<p class="card-text">Item ID: {{item.id}}</p>
<p class="card-text">Item price: {{item.price}}</p>
<p class="card-text">Made in {{item.country_of_manufacture}}</p>
</div>
</div>
</div>
{% endfor %}
Я не могу получить первую фотографию из "Альбома" для отображения.Ничего не выходит.Я пробовал разные вещи в течение трех дней, но безуспешно.Любая помощь очень ценится.Спасибо.
С уважением, CKLee