Django管理站点中的全局变量

时间:2015-03-20 20:19:13

标签: python django dynamic django-admin

这是我原来的问题,但是没有回答,所以我想我再次发布一些我尝试过的策略,并且更具体一些。

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

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

我现在已经设置了用户将使用唯一的bridgekey转到url,然后这将创建该桥的条目。所以(因为我正在我的本地机器上测试)它就像localhost / home / brkey 而我的views.py中与该url对应的代码是

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

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

admins.py

- 设置全局变量

bridgekey_unique =“”

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

对于冗长的帖子感到抱歉,但人们说我不够具体。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我没有读完所有内容 - 抱歉,那里太多了。但我确实注意到您的评论,您希望在您的modeladmin定义中访问您在视图中设置的变量。那可能无法奏效。

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

你几乎不想在课堂上有任何逻辑。您需要将它放在方法中,这些方法在相关时间调用。在这种情况下,您可能需要使用get_fields方法。

修改

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