2016-10-22 59 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,它看起來實際上需要一個查詢來運行這兩行。再次感謝! –

相關問題