为了账号安全,请及时绑定邮箱和手机立即绑定

在 Django 中按类别显示对象

在 Django 中按类别显示对象

慕桂英546537 2023-10-24 16:02:28
我正在构建一个电子商务应用程序,我想创建一个部分来按类别显示一些特色项目。我使用三个滑块来显示这些项目;每个滑块都是一个特色类别,滑块中的每个项目都是一个特色项目。问题是我不知道如何将项目分配给正确的滑块。例如:我想将JeansJacket分配给“衣服和配饰”并显示它。我试过这个:{% for cat in categories %}    <h1>{{ cat.cat_name }}</h1>     <!--(carousel code in between)-->        <div class="carousel-inner" role="listbox">        {% for item in featured_items %}            {% if item.Categoría in cat.cat_name %}                {{ item }}            {% endif %}这是我所拥有内容的简化版本,没有其余内容。我只是不知道如何迭代特色项目并将它们显示在相应的类别中。编辑:这是在 models.py 中:class Categorías(models.Model):    cat_name = models.CharField(max_length=30)    Destacado = models.BooleanField()    class Meta:        ordering = ('cat_name',)        verbose_name = 'Categoría'        verbose_name_plural = 'Categorías'    def __str__(self):         return self.cat_nameclass publicaciones(models.Model):    Título = models.CharField(max_length=30)    Descripción = models.TextField(max_length=200)    Precio = models.FloatField()    Fotos = models.ImageField()    Categoría = models.ForeignKey(Categorías, on_delete=models.CASCADE)    Promocionado = models.BooleanField()    class Meta:        verbose_name = 'Publicación'        verbose_name_plural = 'Publicaciones'    def __str__(self):        return self.Título
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以将prefetch_relatedPrefetch与自定义查询一起使用来获取每个类别的所有相关文章。

categories = Categorías.objects.prefetch_related(Prefetch(

    'publicaciones_set',

    queryset=publicaciones.objects.filter(Promocionado=True),

    to_attr='featured_items'

))

现在您可以循环遍历每个类别,然后循环遍历此预取。您不需要创建单独的featured_items查询集


for category in categories:

    for featured_item in category.featured_items:

        ...

您可以将此模式应用于您的模板


查看完整回答
反对 回复 2023-10-24
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信