gpt4 book ai didi

Django - 覆盖 ModelAdmin 中设置的 get_field 两次返回一个字段

转载 作者:行者123 更新时间:2023-12-01 07:26:19 24 4
gpt4 key购买 nike

我想手动向管理字段集添加一个字段。

函数calcGeometryField返回我想添加到管理字段集中的字段。

但是,我在管理界面中添加了两次该字段。为什么?

class FeatureAdmin(admin.OSMGeoAdmin):
fieldsets = [
('Info', {'fields':['shapefile', 'id_relat', 'attribute_value']})
]
list_display = ['shapefile', 'id_relat']
list_filter = ('shapefile', ('shapefile__created_by'))

def get_fieldsets(self, request, obj=None):
fieldsets = super(FeatureAdmin, self).get_fieldsets(request, obj)
fieldsets[0][1]['fields'].insert(2, calcGeometryField(obj.shapefile.geom_type))
return fieldsets

注意:该字段是来自 OSMGeoAdmin 的 map geodjango,但我使用 IntegerField 进行了测试,结果相同。

编辑:在更改模型实例时,似乎也混合了字段集。来自一个实例的字段出现在管理界面中的另一个实例中。

最佳答案

原始字段集 dict 是一个类级属性。通过插入您的字段,您正在修改类级别的字典,这会影响从它派生的所有实例。

您可能希望在插入之前对字段集进行深度复制:

import copy
...
fieldsets = copy.deepcopy(super(FeatureAdmin, self).get_fieldsets(request, obj))

关于Django - 覆盖 ModelAdmin 中设置的 get_field 两次返回一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com