如何只从 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]
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]