Django管理站点中的全局变量



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

我想创建一个动态管理网站,根据字段是否为空来显示该字段。因此,我有一个模型,它有一组字段,但对于每个单独的条目,都不会包含模型中的所有字段,我想根据该字段是否为空来排除它。我的项目是关于桥梁的,所以说实话,我有一个模型,里面有每个桥梁部分(大约相当于100个),但每个单独的桥梁(映射到每个唯一的brkey)不会有所有的100个桥梁部分。因此,我可以预先填充它所拥有的所有字段,但管理站点有100个其他字段,我不想显示那些没有在我的管理站点上用于该特定网桥的字段,但这些字段几乎每个网桥都会有所不同。

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

我现在已经设置好了,用户将使用唯一的桥接键访问一个url,然后这将创建该桥接的条目。因此(当我在本地机器上测试时),它就像localhost/home/brkey,而我的views.py中与该url对应的代码是

这是我必须走的最后一条路吗?我对JavaScript很陌生,所以我不想走这条路,但如果必须的话,我会走的。此外,Django在语法上使用JavaScript吗?如果是这样的话,我找不到任何关于将Javascript集成到我的管理站点中的Django文档。

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

管理员.py

-设置全局变量

bridgekey_unique="

如果我能找到一种方法,将唯一的桥接键传递给我的modelAdmin类,或者弄清楚所说的字段是否是空白的,因为桥接没有那个部分,我将能够在不使用Javascript的情况下实现我想要的。我尝试了这两种策略的很多变体,但都没有成功,但没有尝试JavaScript的想法,因为我根本不知道任何JavaScript。

很抱歉发了这么长的帖子,但人们说我不够具体。如有任何帮助,我们将不胜感激。

我没有全部看完——对不起,内容太多了。但我确实注意到了您的评论,您希望在modeladmin定义中访问您在视图中设置的变量。这不可能奏效。

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

您几乎从不希望在类级别上有任何逻辑。你需要把它放在方法中,这些方法在相关的时间被调用。在这种情况下,您可能需要使用get_fields方法。

编辑

进一步查看您对get_fields方法的尝试,我根本看不出您在这里试图做什么。'prestressed_concrete_deck'是一个文字字符串,永远不可能是None,所以两个条件都不可能为真。关于参数是什么的问题,该方法的文档清楚地解释了obj是正在编辑的对象。

最新更新