在Django中查询基于新闻提要的数据模型中的关注者

时间:2013-10-02 00:28:15

标签: python django django-models django-queryset

我在Django中有以下(简化)模型,它与Pinterest数据模型非常相似:

class UserProfile(models.Model):
    user = models.OneToOneField(User)

class Collection(models.Model):
    owner = models.ForeignKey(User,related_name='collection_owner')
    followers = models.ManyToManyField(User, related_name='collection_followers', null=True, blank=True, default = None)

class Item(models.Model):
    collections = models.ManyToManyField(Collection,blank=True,null=True)

我有一个User模型,一个与用户映射1-1的UserProfile模型,一个拥有所有者和关注者的Collection模型以及可以属于多个集合的项目。我正在努力确定如何在Django中执行以下查询:

获取给定用户的所有关注者。跟随者的定义遵循至少一个由该特定用户拥有的集合。

获取用户关注的集合的所有不同项目。

我不确定我是否可以在单个查询中执行这些操作,还是必须在多个查询中将其分解?什么是最好的方法,是否有任何权衡?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为第一个是这样的:

User.objects.filter(collection_owner__owner='the user')

后者应该是这样的:

Item.objects.filter(collections__followers='the user').distinct()

但是,您应该知道,这些类型的查询可扩展到大量数据。这样做需要相当多的黑客攻击......