Python 在Django/Postgres中存储树结构
我目前有这些模型,为了回答这个问题而简化:Python 在Django/Postgres中存储树结构,python,django,postgresql,tree,hierarchy,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):
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(虽然效率有点低),但我不能遍历整个树,因为这将有太多的查询
所以我一直在阅读这个主题,似乎闭包表()非常适合我的用例:
谢谢。你到底想要实现什么?像reddit这样的东西?请带上你的树的一些例子,这不是一个简单的
Repost.objects.filter(post=my_post)
在你的第二个案例中,还是我遗漏了什么?是的,是一个链接共享平台,但当然没有reddit那么大。我这样做主要是为了学习(而不是完全抛弃博士后,比如使用neo4j),你有没有看过《django mptt》?@RedJohn没有,我只是想知道。我以前从未使用orm处理过树形结构,所以我有点大胆地思考。你到底想实现什么?像reddit这样的东西?请带上你的树的一些例子,这不是一个简单的Repost.objects.filter(post=my_post)
在你的第二个案例中,还是我遗漏了什么?是的,是一个链接共享平台,但当然没有reddit那么大。我这样做主要是为了学习(而不是完全抛弃博士后,比如使用neo4j),你有没有看过《django mptt》?@RedJohn没有,我只是想知道。我以前从未使用orm处理过树结构,所以我有点大胆地思考。