如何只从 ManyToOne table 获取一个对象而不是查询集?

How to get only one object from ManyToOne table, instead of queryset?

Table 图片:

id| image   | item_id
15|some/path|   45
16|some/path|   45
17|some/path|   45

第一次尝试:

recommended_items = Item.objects.all().filter(rating__gte=9) // All my items (`item_id` column)

for item in recommended_items :
    image = Images.objects.get(item_id=item.id)[:1]

它适用于 id=45 的第一项,但对于其余的 returns error:

Images matching query does not exist.

第二次尝试:

for item in recommended_items :
    image = Images.objects.filter(item=item)[:1]

现在它适用于所有项目,无论是否存在,但它 returns 迭代对象,我应该只为一个对象添加 for 循环,如下所示:

for i in image:
    print(i.image)

处理这个问题的正确方法是什么?我只想要一张唱片(如果可能的话最后一张)

请使用last()方法如下...

image = Images.objects.filter(item=item).last()

首次使用first()方法...

image = Images.objects.filter(item=item).first()

为什么不直接使用元素索引?

for item in recommended_items :
    image = Images.objects.filter(item=item)[0]