在Django / Postgres中存储树结构

时间:2016-03-13 22:20:12

标签: python django postgresql tree hierarchy

我目前有这些模型,为了这个问题而简化:

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

class Post(models.Model):
    creator = models.ForeignKey(User)
    profile = models.ForeignKey(Profile)

# the model in question
class Repost(models.Model):
    creator = models.ForeignKey(User)
    post = models.ForeignKey(Post)
    profile = models.ForeignKey(Profile)
    parent = models.ForeignKey("self", related_name="children")

这适用于通过拥有Profile对象来获取Repost / Post(尽管它有点效率低),但我无法遍历整个树,因为查询过多。

所以我一直在阅读这个主题,似乎闭包表(django-closuretree)非常适合我的用例:

  1. 获取特定个人资料ID的帖子/重新发布
  2. 获取某个帖子ID
  3. 的整个Reposts树

    问题是我发现的大多数例子(这个库的文档和讨论闭包表的其他文章)主要显示如何通过使用根Repost id来检索树(这会破坏我的第二个用例,因为我只有Post id)

    PS:关于数据库,我总是说菜鸟,所以可能这一切都是混乱的,我可以向更好的想法/架构开放。

    感谢。

0 个答案:

没有答案