gpt4 book ai didi

python - “选项”对象没有属性 'get_all_field_names'

转载 作者:太空狗 更新时间:2023-10-29 21:18:11 26 4
gpt4 key购买 nike

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

因此,我正在覆盖 admin.ModelAdmin 的方法get_readonly_fields

这是我的代码

@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'

知道为什么吗?

最佳答案

这可能是因为你使用的是django 1.10。 get_all_field_names was 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)
)))

关于python - “选项”对象没有属性 'get_all_field_names',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40212969/

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