有没有一种简单的方法可以完全自定义 Django 管理站点以显示不是字段的变量?

Posted

技术标签:

【中文标题】有没有一种简单的方法可以完全自定义 Django 管理站点以显示不是字段的变量?【英文标题】:Is there an easy way to completely customize Django Admin Site to display variables that are not fields? 【发布时间】:2015-10-25 22:07:55 【问题描述】:

我意识到我可以覆盖模板,并且我过去曾更改“添加模型”表单和“更改模型”表单。但是,我发现覆盖模板有点混乱,而且很难完全自定义。我的问题是我想显示(使用可编辑的文本框)不是字段的变量,我很难弄清楚如何做到这一点。因为 Django 模型字段不能是列表(我知道你可以把它变成一个字符串,然后像列表一样解析它),但基本上我想将我所有的信息存储在一个字段中(因为它都是相关的并且不会让我已经很长的模型甚至更长),但随后将它们作为单独的字段显示在管理站点上。这是可能的还是有一种简单的方法可以在不完全覆盖模板代码的情况下做到这一点?此外,当我查询要存储的变量的最大字段数时,它肯定会限制我的模型。所以我有 8 个字段以防万一,但我的大多数模型只使用 2 或 3 个字段,而且由于我不知道将使用多少个字段,所以我希望它是动态的。比如说。

我的模型会是这样的:

models.py

class MyModel(Model.model):
    field1 = models.FloatField(null=True, blank=True)
    field2 = models.FloatField(null=True, blank=True)
    field3 = models.FloatField(null=True, blank=True)
    field4 = models.FloatField(null=True, blank=True)
    field5 = models.FloatField(null=True, blank=True)
    field6 = models.FloatField(null=True, blank=True)
    field7 = models.FloatField(null=True, blank=True)
    field8 = models.FloatField(null=True, blank=True)

理想情况下,我希望将所有信息作为字符串存储在一个字段中,当我解析它时,它就像一个列表。

class MyModel(Model.model):
    field = models.FloatField(null=True, blank = True)`

但是,我想在我的管理站点上仅显示一个字段的 8 个框。如果不对模板代码进行重大重构,这是否可行?

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

管理页面只是 django 源代码中的一个应用程序,就像您可以编写的任何其他应用程序一样。所以从这个意义上说,它可以完全定制。我建议你看一下源代码

<wherever you keep django>/django/contrib/admin

看看它目前是如何实现的,你可以 c/p 任何代码并随意修改它。

但是,有没有一种简单的方法可以完全自定义它,而无需进行重大重建?我不这么认为。

【讨论】:

谢谢!我非常感谢您的回复。射击,这就是我害怕的。我之前看过那里,根据他们为用户表单设置的方式修改了我的 AddForm 和 Change Form Forms,所以我会更仔细地研究源代码! 没问题!是的,这太糟糕了,但我认为你花在阅读源代码上的时间并没有真正浪费时间——你学到了很多关于在 django 中做事的最佳方法 非常感谢!我认为你的权利。在我最初深入研究源代码时,它有点令人困惑,但它确实帮助我改变了我的形式。这会更深入一点,但我会学到更多! 如果你能接受这个答案,那就太棒了:) 是的,我已经做到了!它是否显示为您已接受?我还不能公开影响显示的帖子,因为我不经常发帖。

以上是关于有没有一种简单的方法可以完全自定义 Django 管理站点以显示不是字段的变量?的主要内容,如果未能解决你的问题,请参考以下文章

Django 创建自定义User模型 CustomUser

如何在 django 管理面板中完全自定义 sidebar_menu?

管理员中的 Django 自定义列表视图

理解Go Interface

有没有一种简单的方法可以在 tensorflow 中使用 tf.data.Dataset.from_generator 和自定义 model_fn(Estimator) 中的功能

HTTPS Elastic Beanstalk 非自定义域