我想手动为管理字段集添加一个字段。
函数calcGeometryField
返回我想要添加到admin字段集的字段。
但是,我在管理界面中添加了两次该字段。为什么呢?
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的地图geodjango,但我使用IntegerField测试了相同的结果。
编辑:在更改模型实例时,fielsets似乎也是混合的。实例中的字段显示在管理界面中的另一个实例中。
答案 0 :(得分:13)
原始字段集dict是类级属性。通过插入您的字段,您可以修改类级别字典,该字典会影响从中派生的所有实例。
在插入之前,您可能希望对字段集进行深度复制:
import copy
...
fieldsets = copy.deepcopy(super(FeatureAdmin, self).get_fieldsets(request, obj))