尝试根据另一个表中的值进行过滤

时间:2016-10-22 02:36:45

标签: django

我有两张桌子

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

如何选择与UsrPosts相关的items后跟一些user?即我可以在ItemFollowers喜欢(item0,user0),(item1,user0),(item5,user0)。我需要根据用户(aka。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 个答案:

答案 0 :(得分:1)

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