django - 我可以让 Django 管理员反射(reflect)模型的层次结构吗?

标签 django model navigation django-admin one-to-many

假设一个 Django 应用程序具有通过一对多关系连接的几个模型:

class Blog(models.Model):
    ...

class Post(models.Model):
    blog = models.ForeignKey(Blog)
    ...

class Comment(models.Model):
    post = models.ForeignKey(Post)
    ...

从概念上讲,它们形成一个层次结构,一个树状结构。我希望 Django 管理员反射(reflect)这一点。特别是:
  • 在帖子的变更列表中,每个帖子都应该有一个链接到相应评论的变更列表;
  • 同样,帖子的编辑页面应该链接到右上角按钮区域的评论更改列表;
  • 当我打开相关评论列表时,它需要反射(reflect)面包屑中的关系(例如:帖子 › “ Hello World ” › 评论),理想情况下,也反射(reflect)在 URL ( post/123/comment/ ) 中。

  • 这当然也应该适用于层次结构的其他级别。

    使用自定义 list_display 可以轻松实现 1 号条目和使用 ?post__id=查询评论更改列表。但这只不过是一次黑客攻击。通常 Django 假设我的三个模型是独立的顶级实体。

    有没有直接的方法来实现这一点?我想我可以覆盖一堆模板和 AdminModel方法,但对于看似常见的情况,也许有更好的解决方案?

    最佳答案

    这种情况如何普遍?考虑一个模型可以拥有几乎无限数量的外键关系的事实,更不用说反之亦然了。管理员如何“知道”如何在不自定义内容的情况下以用户需要的方式表示这些数据?

    有人会建议您习惯于使用内容管理系统而不是网络框架(没有双关语)。重要的是要注意 Django 不是一个 cms,而是一个你可以在你认为合适的基础上构建的网络框架。简而言之:“Django 相当笨拙,不知道上下文要求”。

    尽管管理员是一个开箱即用的野兽,但很难自定义。对于它是否应该成为核心的一部分,已经有很多讨论。我只能建议,如果自定义东西往往会变得棘手,您应该编写自己的“管理员”,这并不难。

    关于django - 我可以让 Django 管理员反射(reflect)模型的层次结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092982/

    相关文章:

    django - Django modelForm中的文件上传

    ruby-on-rails - Rails 模型测试

    html - 网站标语在顶部导航上方滚动

    python-3.x - 调用 Django Python shell 时如何正确设置 PYTHONPATH?

    python - "Unable to locate the SpatiaLite library." Django

    tensorflow - Keras中的h5模型是什么?

    go - beego中可以使用多个注解吗?

    css - 带子菜单的粘性导航

    android - 使用导航架构操作点击后退按钮时如何避免 fragment 重新创建?

    python - 如何从 Django 中的另一个模型获取一个模型的计数?