加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django – 在ModelAdmin中覆盖get_fieldset会返回两次字段

发布时间:2020-12-20 12:30:57 所属栏目:Python 来源:网络整理
导读:我想手动为管理字段集添加一个字段. 函数calcGeometryField返回我想要添加到admin字段集的字段. 但是,我在管理界面中添加了两次该字段.为什么? class FeatureAdmin(admin.OSMGeoAdmin): fieldsets = [ ('Info',{'fields':['shapefile','id_relat','attribut
我想手动为管理字段集添加一个字段.

函数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似乎也是混合的.实例中的字段显示在管理界面中的另一个实例中.

解决方法

原始字段集dict是类级属性.通过插入字段,您将修改类级别字典,该字典会影响从中派生的所有实例.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读