2016-10-24 5 views
2

django-adminmodel을 편집 할 수 없게하려고합니다.'옵션'개체에 'get_all_field_names'속성이 없습니다.

따라서 overridingget_readonly_fieldsadmin.ModelAdmin입니다.

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' 

어떤 아이디어입니까?

답변

10

아마도 django 1.10을 사용하고 있기 때문일 수 있습니다. 이 버전에서는 get_all_field_nameswas deleted입니다.

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) 
    ))) 
+0

을위한 get_fields이 사용 -> 유형의 오류 :으로 hasattr은() : 속성 이름은 문자열 –

+0

해야 @AdilMalik 당신이 내 대답을 복사하거나인가 예로서 그것을 사용 했는가? 이 코드는 워드 프로세서에서 가져 와서 작동하기 때문입니다. 이 문제가있는 곳을 보여줘? –

+0

괜찮 았어. 나는 누락 된 _ 메타 –