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查询集。像
这样的东西items = TradeItem.objects.all().annotate(wishlist=
<heresy>
if Wishlist.objects.filter(user=request.user, item={current_item}:
True
else:
False
</heresy>
)
是否可以使用注释/聚合来执行上述操作,一般来说最有效的方法是什么?
答案 0 :(得分:2)
这个问题是注释发生在数据库(SQL)级别上。您只能使用SQL方言本身支持的函数(如SUM,AVG ...)。如果要追加任意属性/数据字段,则应迭代查询集并对每个实例单独检查:
items = TradeItem.objects.all()
user_wishlist = Wishlist.objects.filter(user=request.user)
for item in items:
item.wishlist = user_wishlist.filter(item=item).exists()
答案 1 :(得分:0)