可能是一个非常简单的解决方案,但不能真正想出一个。最终目标是创建一个首先显示类别的画廊。每个类别都应显示最后添加的带有各自类别名称的图像。我的模型.pyclass Category(models.Model): name = models.CharField(max_length=200) slug = models.SlugField() objects = models.Manager() class Meta: verbose_name_plural = 'categories' def __str__(self): return self.nameclass Item(models.Model): name = models.CharField(max_length=200) description = models.TextField(blank=False, null=True) date = models.DateTimeField(blank=False, null=True) image = models.ImageField(blank=True, null=True) category = models.ForeignKey(Category, blank=True, null=True, on_delete=models.SET_NULL) objects = models.Manager() class Meta: app_label = 'home' get_latest_by = 'date'我的意见.pydef index(request): cat = Category.objects.all() latest = Item.objects.latest('date') context = { 'categories': cat, 'last_added': latest, } return render(request, 'gallery/index.html', context)我的 index.html{% block content %}<h4 class="gallery">Gallery</h4> {% for category in categories %} <p class="category">{{ category.name }}</p> <p> <img class="images" src="{{ last_added.image.url }}"> </p> {% endfor %}{% endblock %}我无法弄清楚如何显示各自类别的最新图像。我知道我必须以某种方式创建一个动态查询,该查询将使用 'category.name' 作为变量,但你如何做到这一点?任何输入都是非常有价值的,至少表明我应该工作的方向。
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
您可以在视图中添加:
for c in cat: cat.latest_image = Item.objects.filter(category=c).latest('date')
然后在模板的相关部分:
<img class="images" src="{{ cat.latest_image.image.url }}">
这只是一个例子,有很多更优雅的方法可以实现这一点。
添加回答
举报
0/150
提交
取消