Django 管理站点中的全局变量

Global Variables in Django Admin Site

这是我最初的问题,但没有得到回答,所以我想 post 再次使用我尝试过的一些策略,并且更具体一些。

我想创建一个动态管理站点,它会根据字段是否为空来显示该字段。所以我有一个模型,它有一定数量的字段,但对于每个单独的条目,将不包含我模型中的所有字段,我想根据该字段是否为空来排除。我的项目是关于桥梁的,所以实际上我有一个模型,其中包含每个桥梁部分(这大致相当于 100 个),但每个单独的桥梁(映射到每个唯一的 brkey)不会全部 100桥梁零件。因此,我可以预填充它确实具有的所有字段,但是管理站点还有 100 个其他字段,我不想显示那些未在我的管理站点上用于该特定桥的字段,但这些字段将几乎每座桥都不同。

就像我之前说的,我有一个唯一的桥标识符(一个唯一的 15 位数字字符串),它与每座桥相关,然后是描述桥的所有不同变量。

我现在已经设置好了,用户将使用唯一的网桥密钥转到 url,然后这将创建该网桥的条目。所以(当我在我的本地机器上测试时)就像 localhost/home/brkey 和我的 views.py 中的代码对应于 url 是

这是我必须走的最后一条路吗?我是 JavaScript 的新手,所以我不想走这条路,但如果必须的话,我会的。无论如何,Django 是否也使用语法上不同的 Javascript ?如果是这样,我找不到任何关于将 Javascript 合并到我的管理站点的 Django 文档。

我用尽的最后一个选项是使用全局变量。我没有在我的 Views.py 中创建条目的 url,而是将它放在我的 admins.py 中,并且我的 modelAdmin class 也放在那里,就像这样。

admins.py

-设置全局变量

bridgekey_unique = " "

如果我能找到一种方法将唯一的网桥密钥传递给我的 modelAdmin class,或者弄清楚该字段是否因为网桥没有那个部分而为空,我将能够实现我想要什么而不使用 Javascript。我已经尝试了所有这两种策略的很多变体,但都无济于事,但还没有尝试过 JavaScript 的想法,因为我根本不知道任何 javascript。

抱歉冗长 post,但人们说我不够具体。任何帮助将不胜感激。

我没有读完所有内容 - 抱歉,太多了。但我确实注意到您的评论,您希望在您的 modeladmin 定义中访问您在视图中设置的变量。这不可能行得通。

当包含 class 的模块首次导入时,始终执行 class 级别的任何内容。那是服务器进程启动的时候,所以在视图中完成的任何事情都不可能发生。

您几乎不想在 class 级别有任何逻辑。您需要将其放在相关时间调用的方法中。在这种情况下,您可能需要使用 get_fields 方法。

编辑

进一步查看您对 get_fields 方法的尝试,我完全看不到您在这里尝试做什么。 'prestressed_concrete_deck' 是一个文字字符串,永远不可能是 None,所以你的条件都不可能为真。至于你关于参数是什么的问题,documentation for that method 清楚地解释说 obj 是正在编辑的对象。