创建一个动态管理站点

时间:2015-03-10 15:31:57

标签: python django django-models django-admin

我想创建一个动态管理站点,根据该字段是否为空将显示该字段。所以我有一个具有一定数量字段的模型,但是对于每个单独的条目将不包含我的模型中的所有字段,并且我想根据该字段是否为空来排除。

我有一个唯一的桥接器标识符,它与每个桥接器相关,然后是描述桥接器的所有各种不同的变量。

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

然而,并不是每个桥都是一样的,而且我想在模型中包含更多变量,但是现在我只测试两个:prestressed_concrete_deck和reinforced_concrete_coated_bars。我想要的是动态创建管理站点,如果该字段为空,则不显示prestressed_concrete_deck变量。因此,我不想在管理站点上显示所有变量,而是仅在该桥接器具有该部分时显示这些变量,并且如果该字段为空,则不显示任何变量。

该问题的另一个可能的解决方案是将该唯一标识符提供给我的admins.py。我无法弄清楚如何获得该单个密钥,然后我可以在admins.py中查询。如果我知道如何访问bridgekey,我可以动态查询我的admins.py。那么如何在admins.py中访问该条目的brkey(像BridgeModel.brkey这样的东西?)

我在admin.py中尝试了几个不同的东西,并尝试过在我的管理类中覆盖get_fields()方法的注释建议,但我可能在语法上错了,我有点困惑它究竟需要什么对象是。这是实际的入场券吗?或者是个别领域?

2 个答案:

答案 0 :(得分:0)

只需覆盖ModelAdmin类中的get_fields方法。

您可以检查obj是否作为函数参数传递,以便您可以检查哪些字段为空。该函数需要返回一个元组,因此,您需要检查field1 is None是否然后返回(field1, field2, field3)(field2, field3),具体取决于field1的值。

答案 1 :(得分:0)

我使用的Django 1.6不支持覆盖get_fields方法。更新到1.7,这种方法非常有效。