假设一个 Django 应用程序具有通过一对多关系连接的几个模型:
class Blog(models.Model):
...
class Post(models.Model):
blog = models.ForeignKey(Blog)
...
class Comment(models.Model):
post = models.ForeignKey(Post)
...
从概念上讲,它们形成一个层次结构,一个树状结构。我希望 Django 管理员反射(reflect)这一点。特别是:
post/123/comment/
) 中。 这当然也应该适用于层次结构的其他级别。
使用自定义
list_display
可以轻松实现 1 号条目和使用 ?post__id=
查询评论更改列表。但这只不过是一次黑客攻击。通常 Django 假设我的三个模型是独立的顶级实体。有没有直接的方法来实现这一点?我想我可以覆盖一堆模板和
AdminModel
方法,但对于看似常见的情况,也许有更好的解决方案?
最佳答案
这种情况如何普遍?考虑一个模型可以拥有几乎无限数量的外键关系的事实,更不用说反之亦然了。管理员如何“知道”如何在不自定义内容的情况下以用户需要的方式表示这些数据?
有人会建议您习惯于使用内容管理系统而不是网络框架(没有双关语)。重要的是要注意 Django 不是一个 cms,而是一个你可以在你认为合适的基础上构建的网络框架。简而言之:“Django 相当笨拙,不知道上下文要求”。
尽管管理员是一个开箱即用的野兽,但很难自定义。对于它是否应该成为核心的一部分,已经有很多讨论。我只能建议,如果自定义东西往往会变得棘手,您应该编写自己的“管理员”,这并不难。
关于django - 我可以让 Django 管理员反射(reflect)模型的层次结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092982/