class TradeItem(models.Model):
...
class Wishlist(models.Model):
user = models.ForeignKey(User, related_name='wishlist_user')
item = models.ForeignKey(TradeItem, related_name='wishlist_item')
我需要使 TradeItem 查询集用一个 bool 值注释,说明某个项目是否在该用户的愿望 list 中。有点像
items = TradeItem.objects.all().annotate(wishlist=
<heresy>
if Wishlist.objects.filter(user=request.user, item={current_item}:
True
else:
False
</heresy>
)
是否可以使用注释/聚合来完成所说的事情,通常最有效的方法是什么?
请您参考如下方法:
您可以在单个查询中使用Exists 在数据库级别实际解决这个问题:
from django.db.models import Exists, OuterRef
user_wishlist = Wishlist.objects.filter(item_id=OuterRef('id'), user=user)
items = TradeItem.objects.annotate(in_wishlist=Exists(user_wishlist))
PS:我知道,老问题...
