我正在尝试找出从我的不同用户“帐户”调用所有“项目”的最佳(最简单)方法。
帐户具有用户外键。
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字段。)
我希望这是有道理的。谢谢。
答案 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' )
如果有更好的方式,我会很高兴知道它。
感谢。