2016-10-22 29 views
0

我有2代表作为试图筛选基于另一个表中的值

class ItemFollowers(models.Model): 
    item = models.ForeignKey(Items, models.DO_NOTHING, db_column='item') 
    user = models.ForeignKey(AuthUser, models.DO_NOTHING, db_column='user') 

而另一种是

class UsrPosts(models.Model): 
    item = models.ForeignKey('Items', models.DO_NOTHING, db_column='item') 
    # Some other fields 

如何选择其次是一些有关itemsUsrPostsuser?即我可以拥有像(item0,user0),(item1,user0),(item5,user0)这样的ItemFollowers中的记录。我需要基于用户过滤UsrPosts(亦称request.user.id

这里是一个低效的非工作的方式来获得UsrPostts

itms = ItemFollowers.objects.filter(user_id=request.user.id) 
qry = Q(item_id=itms[0].item.id) | ..... | Q(item_id=itms[N].item.id) 
posts = UsrPosts.objects.filter(qry) 

有一些过滤器魔术得到它在一个事务中?

回答

1
itms = ItemFollowers.objects.filter(user_id=request.user.id).values‌​_list('item') 
posts = UsrPosts.objects.filter(item__in = itms) 
+0

非常感谢!第一行只有轻微的错误。它应该是'ItemFollowers.objects.filter(user_id = request.user.id).values_list('item')'。 如果在一次交易中没有更好的答案,我会将其作为接受的答案。非常感谢! –

+0

好吧,使用django_debug_toolbar,它看起来实际上需要一个查询来运行这两行。再次感谢! –

相关问题