我目前有这些模型,为了这个问题而简化:
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)非常适合我的用例:
问题是我发现的大多数例子(这个库的文档和讨论闭包表的其他文章)主要显示如何通过使用根Repost id来检索树(这会破坏我的第二个用例,因为我只有Post id)
PS:关于数据库,我总是说菜鸟,所以可能这一切都是混乱的,我可以向更好的想法/架构开放。
感谢。