【发布时间】:2019-05-30 21:35:03
【问题描述】:
过去 2 天我一直在为此苦苦挣扎,我真的需要一些新的意见!
首先是我的配置:
models.py
class Category(models.Model):
name = models.CharField(max_length=200)
objects = models.Manager()
class Meta:
verbose_name_plural = 'categories'
def __str__(self):
return self.name
class Item(models.Model):
name = models.CharField(blank=False, max_length=200)
description = models.TextField(blank=False, null=True)
date = models.DateTimeField(blank=False, null=True)
category = models.ForeignKey(Category, blank=True, null=True, on_delete=models.SET_NULL)
order = models.IntegerField(blank=True, null=True)
active = models.BooleanField(blank=True, default=False)
objects = models.Manager()
class Meta:
verbose_name_plural = 'items'
class ItemImage(models.Model):
image = models.ImageField(blank=True, null=True)
order = models.IntegerField(blank=True, null=True)
main = models.BooleanField(blank=True, default=False)
cover = models.BooleanField(blank=True, default=False)
item = models.ForeignKey(Item, related_name='items', blank=True, null=True, on_delete=models.SET_NULL)
objects = models.Manager()
class Meta:
verbose_name_plural = 'item images'
views.py
def index(request):
all_items = Item.objects.filter(active=True)
pics = []
for a in all_items:
images = ItemImage.objects.filter(main=True)
pics.append(images)
propert = Item.objects.filter(active=True)
context = {
'pictures': pics
}
return render(request, 'gallery/index.html', context)
模板:
<div id="image-popups" class="grid">
{% for pic in pictures %}
<div class="item">
<img class="lazy" src="{{ pic.image.url }}"
data-mfp-src="{{ pic.image.url }}"
data-effect="mfp-zoom-in">
</div>
{% endfor %}
</div>
我的目标是让所有项目过滤为“active=True”以及所有相关图像的值为“main=True”。 我考虑过使用“main=True”过滤器查询 ItemImage 模型,但将来某个时候我需要检索描述和名称。 我应该在这里使用多对多关系吗?
如果我使用 .objects.get(pk=..),我可以让它工作,但这只会返回一个项目。
我想要的最终结果:
- 来自 item1 且 active=True 的 image_1
- 来自 item2 的 image_1 且 active=True
- image_2 来自 item2 且 active=True
- 来自 item3 的 image_1 且 active=True
- 等
【问题讨论】:
-
你在哪里使用 'a' - for a in all_items:
-
可以在HTML页面的for循环中应用if条件
-
抱歉,没完全理解你的想法,能否详细说明一下?
标签: django django-models django-views