假设一个 Django 应用程序具有通过一对多关系连接的几个模型:
class Blog(models.Model):
...
class Post(models.Model):
blog = models.ForeignKey(Blog)
...
class Comment(models.Model):
post = models.ForeignKey(Post)
...
从概念上讲,它们形成了一个层次结构,一个树状结构。我希望 Django 管理员反映这一点。尤其:
- 在帖子的变更列表中,每个帖子都应该有一个指向相应评论变更列表的链接;
- 同样,帖子的编辑页面应该链接到右上角按钮区域的评论更改列表;
- 当我打开相关评论列表时,它需要反映面包屑中的关系(例如:帖子 › “Hello world” › 评论),理想情况下,也反映在 URL (
post/123/comment/
) 中。
这当然也应该适用于层次结构的其他级别。
list_display
使用自定义条目并使用?post__id=
对评论更改列表的查询非常容易。但这只不过是一种黑客行为。通常 Django 假设我的三个模型是独立的顶级实体。
有没有一种简单的方法可以做到这一点?我想我可以覆盖一堆模板和AdminModel
方法,但对于看似常见的情况,也许有更好的解决方案?