uwsgi.log에
AttributeError: 'dict' object has no attribute 'is_hidden' 관련 오류가 뜬다.
그 이유는
class MenuAdmin(DraggableMPTTAdmin):
...
fieldsets = (
(None, {"fields": ("site",)}),
(("Menu Info"), {"fields": ("menu_name", "menu_desc", "menu_url", "menu_sort_order", "parent_menu")}),
(("Permissions"), {"fields": ("menu_isEnabled", "groups")}),
(("Creator/Modifier"), {"fields": (("menu_crte_dt", "menu_crte_user"), ("menu_mdfy_dt", "menu_mdfy_user"))}),
)
위 소스와 같이 fieldsets정의시 위의 bold구문으로 같은 라인에 여러 field 출력하고자 할때
/Lib/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html 의 {% if field.field.is_hidden %} hidden{% endif %}구문에서
is_hidden 속성이 없다는 에러 로그가 쌓이는 것이다.
해결 방안은
/Lib/site-packages/django/contrib/admin/helpers.py 에서 아래와 같이 수정한다.
...
class AdminReadonlyField:
def __init__(self, form, field, is_first, model_admin=None):
# Make self.field look a little bit like a field. This means that
# {{ field.name }} must be a useful class name to identify the field.
# For convenience, store other field-related data here too.
if callable(field):
class_name = field.__name__ if field.__name__ != '<lambda>' else ''
else:
class_name = field
if form._meta.labels and class_name in form._meta.labels:
label = form._meta.labels[class_name]
else:
label = label_for_field(field, form._meta.model, model_admin, form=form)
if form._meta.help_texts and class_name in form._meta.help_texts:
help_text = form._meta.help_texts[class_name]
else:
help_text = help_text_for_field(class_name, form._meta.model)
self.field = {
'name': class_name,
'label': label,
'help_text': help_text,
'field': field,
'is_hidden': False, # 추가
}
...