Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django多态管理列表视图_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python Django多态管理列表视图

Python Django多态管理列表视图,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我在Django代码中有一个全局配置变量列表,其中一些是整数,一些是字符串 我目前正在使用django多态性,这样基础模型有名称,子模型有值 例如: 类配置多态模型: name=models.CharFieldmax_length=128,unique=True 定义自身: 返回self.name 类配置配置: 值=模型。IntegerFielddefault=0 定义自身: 返回f'{self.name}={self.value}' 类配置str配置: value=models.CharFie

我在Django代码中有一个全局配置变量列表,其中一些是整数,一些是字符串

我目前正在使用django多态性,这样基础模型有名称,子模型有值

例如:

类配置多态模型: name=models.CharFieldmax_length=128,unique=True 定义自身: 返回self.name 类配置配置: 值=模型。IntegerFielddefault=0 定义自身: 返回f'{self.name}={self.value}' 类配置str配置: value=models.CharFieldmax_length=256,默认值= 定义自身: 返回f'{self.name}={self.value}' 然后将模型注册到管理部分,如下所示:

@管理注册表配置 类配置AdminPolymorphicparentModelAdmin: 列表显示='\uuuu str\uuuuu', child_models=configurationnt,ConfigurationStr @admin.RegisterConfiguration 类配置AdminPolyMorphicChildModelAdmin: 基本模型=配置 @admin.RegisterConfiguration str 类配置StradMinPolymorphicchildModelAdmin: 基本模型=配置str 不幸的是,str部分在配置的共享列表视图中只显示基类1。 除了查看ConfigurationNT和ConfigurationStr的特定列表外,我无法以任何方式访问该值

有没有办法把它们列在一个好的列表里

让我们假设我忘记了django多态性并使用稀疏数据,这样每个配置都有一个整数和一个字符串,以及一些机制来说明它应该是什么,比如整数类型。 然后,我可以在_str_______)实现中显示正确的数据,但是在编辑时,它将同时显示这两个数据。 在这样一个简单的例子中,这可能是可以的,但是我也有更复杂的模型,这些模型具有广泛的差异字段,但在逻辑上都属于一个列表。 那么,在管理界面中是否有方法根据字段隐藏/显示某些字段,例如在列表显示和列表可编辑中

长话短说,有没有办法在管理界面中正确实现多态列表?
让它在共享列表视图中可编辑将是令人惊讶的,但即使只是实际显示信息,而只能在对象本身内部或特定列表中进行编辑,也会很好。

隐藏在polymorphic.admin.parentadmin.py的源代码中的是:

哪种是有意义的。由于您可能在那里显示了20个项目,因此在默认情况下尝试并优化它是有意义的。否则,该页面超时的可能性太大

不管怎样,我认为:

polymorphic_list = True
希望能为您解决此问题:

实际上,它也在文档中的“实施细节”下:

默认情况下,将在queryset上调用non_多态方法,因此仅将父模型提供给列表模板。这是为了避免检索子模型对性能的影响

这可以通过在父管理员上设置多态列表属性来控制。将其设置为True将为列表模板提供子模型


非常感谢,这正是我想要的!我的数据集非常小,最多在十个范围内,所以我怀疑性能是否会有多重要。是的,即使有20个,我认为大多数情况下都可以。很高兴能帮忙:
polymorphic_list = True