“Options”对象没有“get-all-field-names”属性

2024-05-28 23:05:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的django-admin中,我试图使model不可编辑。

所以,我是overridingget_readonly_fields方法。

Here is my Code

@admin.register(SMSTemplate)
class SMSTemplateAdmin(admin.ModelAdmin):
    list_display=['title', 'json', 'note']
       formfield_overrides = {
       JSONField: {'widget': PrettyJSONWidget }
    }

    def has_delete_permission(self, request, obj=None):
        return False

    def get_readonly_fields(self, request, obj=None):
        return self.model._meta.get_all_field_names()

但我面临一个错误。我把错误贴在这里。

'Options' object has no attribute 'get_all_field_names'

知道为什么吗?


Tags: selfnoneobjfieldfieldsgetmodelreturn
1条回答
网友
1楼 · 发布于 2024-05-28 23:05:24

可能是因为你用的是django 1.10。get_all_field_nameswas deleted在此版本中。使用get_fields

def get_readonly_fields(self, request, obj=None):
    return [f.name for f in self.model._meta.get_fields()]

或完全兼容版本

from itertools import chain

def get_readonly_fields(self, request, obj=None):
    return list(set(chain.from_iterable(
        (field.name, field.attname) if hasattr(field, 'attname') else (field.name,)
        for field in self.model._meta.get_fields()
        # For complete backwards compatibility, you may want to exclude
        # GenericForeignKey from the results.
        if not (field.many_to_one and field.related_model is None)
    )))

相关问题 更多 >

    热门问题