from typing import List

def get_all_fields(model: models.Model) -> List[str]:
    return [field.name for field in model._meta.fields]

Django 개발중에 이런 함수를 만들었습니다. (무슨 코드인지는 생략)

 

Expected type 'Model', got 'Type[MyModel]' instead

근데 list_display에 쓰려고 보니 뭔가 오류가 나옵니다.

문제는 파라미터 타입으로 클래스의 SubType을 지정할 때 Type[T]으로 감싸줘야 한다네요. typing 어렵습니다;

(관련 내용: https://stackoverflow.com/a/44664064/4295499)

 

from typing import List, Type

def get_all_fields(model: Type[models.Model]) -> List[str]:
    return [field.name for field in model._meta.fields]

어쨌거나 이런식으로 수정하면 됩니다.

반응형