Django Query从我的帐户中获取所有用户项目

时间:2018-04-14 23:42:07

标签: django django-queryset

我正在尝试找出从我的不同用户“帐户”调用所有“项目”的最佳(最简单)方法。

帐户具有用户外键。

class Acct ( models.Model ):
    user = models.ForeignKey ( settings.AUTH_USER_MODEL)

该项目具有Account foreignKey。

class Items ( models.Model ):
    acct = models.ForeignKey ( Acct )

所以当我有一个Acct列表时 - 获取不同帐户的所有用户项目的最佳方法是什么?

我可以使用以下内容获取所有帐户:

a = request.user.acct_set.all ().filter ( active = 1 )

现在下一次调用获取这些帐户的项目是什么?

我唯一能想到的就是将User foreignKey添加到Items中。 (我还需要添加Active字段。)

我希望这是有道理的。谢谢。

2 个答案:

答案 0 :(得分:2)

您无需再添加任何外键 - 您可以直接在一个查询中traverse the existing relationships执行此操作:

# Fetch all the items associated with all accounts for this user
items = Item.objects.filter(acct__active=1, acct__user=request.user)

答案 1 :(得分:0)

不确定这是最有效的方法,但似乎有效。

id = request.user.acct_set.values_list ( 'id', flat=True ).filter ( active = 1 )

items = Item.objects.filter ( acct__in = id ) .order_by ( 'date' )

如果有更好的方式,我会很高兴知道它。

感谢。