我正在使用Python(3.7)和Django的(2.2)中,我已经实现了两个模型ItemModelImages所以每一个项目都会有多个图像,并添加项目到images模型,并添加related_name但是当我尝试到项目访问Django模板这些图像它没有提供有关这些图像的任何信息。

这里是我的模型: 从models.py

class ItemModel(models.Model):
    stock_number = models.IntegerField(blank=False)
    title = models.CharField(max_length=255, blank=False)
    price = models.IntegerField(blank=False)
    description = models.TextField(max_length=1000)
    condition = models.CharField(max_length=255, choices=COND_CHOICES, blank=False)
    model = models.CharField(max_length=255)
    dimensions = models.CharField(max_length=255)
    make = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title


class Images(models.Model):
    item = models.ForeignKey(ItemModel, on_delete=models.CASCADE, related_name='images')
    image = models.ImageField(upload_to=images_directory_path)

Update: Here's the function i'm using to rename images:

def images_directory_path(instance, filename):
    return '/'.join(['images', str(instance.item.id), str(uuid.uuid4().hex + ".png")])

和这里的我试图访问这些图片在模板中的项目:

{% for img in item.images.all %}
    {% if forloop.first %}
        <td> {{ item.images.first.name }}</td>
    {% endif %}
{% endfor %}

这里的观点:

views.py

class Inventory(View, LoginRequiredMixin):
    def get(self, request):
        items = None
        try:
            items = ItemModel.objects.all()
        except ItemModel.DoesNotExist:
            return redirect('home')

        return render(request, 'app/inventory.html', {'all_items': items})

什么都可以错在这里?

分析解答

看起来你只需要

{% for img in item.images.all %}
    {% if forloop.first %}
        <td> <img src="{{ img.image.url }}"/> </td>
    {% endif %}
{% endfor %}