当前位置: 首页 > 知识库问答 >
问题:

django查询集上的操作

华项明
2023-03-14

假设我有一个与产品模型具有多对一关系的图像模型,如下所示:

   class Image(models.Model):
         product = ForeignKey(Product,on_delete=models.CASCADE,
        related_name='images'
        )
         original = ImageField(ulpoad_to='img/')
   
   class Product(models.Model):
        title = CharField(max_length=120)
        
        def get_images(self):
            return self.images.all()
       
        def get_primary_image(self):
            #return the first uploaded image in the queryset
            images = self.get_images()
            return images[0]

当尝试访问模板中图像标记上的{{product.get_primary_image.url}时,它会输出一个索引器而不是图像,即使在向数据库添加了多个图像之后,我仍然会得到索引错误。我哪里会出错?请帮帮我,我还是个新手。

共有2个答案

贾飞鸿
2023-03-14

您的图像可能为空,因此无法获取图像[0]您可以使用以下代码

def get_primary_image(self):
    return self.get_images().first()

如果列表中没有图像,您将无法获得任何图像

颜文昌
2023-03-14

如上所述,您需要使用. first()

此外,您的函数调用图像对象,而不是“original”字段,因此您可能需要使用{{product.get\u primary\u Image.original.url}调用它。

 类似资料:
  • 在这一章中,你将学习 Django 如何连接到数据库,并将数据存储在里面。一探究竟吧! QuerySet 是什幺呢? 从本质上说,QuerySet 是给定模型的对象列表(list)。QuerySet 允许您从数据库中读取数据,对其进行筛选以及排序。 用例子来学习最容易的了。让我们试试这个,好吗? Django shell 打开你本地的终端(不是在Python解析器里面) 然后输入这个命令: (my

  • 问题内容: 建议的用于检查查询是否返回任何结果的惯用法是什么? 例: 我想有几种不同的检查方法,但是我想知道一个有经验的Django用户将如何做。文档中的大多数示例只是忽略了什么都没有发现的情况… 问题答案:

  • 问题内容: 我有点困惑如何使用在Django的。例如,一个对象Blog ,以及与该对象相关的attribute entry_set。是什么意思? 如果有人可以使用此示例显示可能的输出,我将不胜感激。 问题答案: 你看到的是反向相关的对象查找。 在你的示例中: 现在,给定类型为的对象,你将可以访问相关对象-这是一个正向关系。该是一个反向查找类变量的Django为你看跌期权。 因此,给定对象-你将执行

  • 问题内容: 我有一个查询。现在,此查询当然返回一个结果集,我想要的是查询此查询的结果集,例如,我只希望上述查询具有唯一的名称。我应该提一下,我知道我可以在Query1中使用,但这只是一个示例,我的实际情况有些不同,我想知道的是是否可以查询上一个查询的结果集。我正在使用SQL Server 2012。 问题答案: 您可以使用该子句

  • 问题内容: 我想做的是这样的: 获得得分最高的30位作者() 订购作者 last_name 问题答案: 关于什么 在Django 1.4及更高版本中,你可以通过提供多个字段进行订购。 参考:https : //docs.djangoproject.com/en/dev/ref/models/querysets/#order-by order_by(字段) 默认情况下,a返回的结果由模型的Meta中

  • 问题内容: 我有一个带有两个自定义管理器方法的Django模型。每个对象都基于对象的不同属性返回模型对象的不同子集。 有没有什么方法可以获取一个查询集,或者只是一个对象列表,那就是每个管理器方法返回的查询集的并集? 问题答案: 这可以工作,看起来更干净: 如果你不希望重复,则需要添加: