작성
·
312
0
안녕하세요 강사님
저와 비슷한 질문을 어떤분께서도 하셨고, 강사님이 x,y에 빗대어 말씀은 해주셨는데, 그 자체는 이해가 갔어도 강사님이 구현해주신 코드 안에서는 잘 이해가 안가서요 ㅠㅠ
질문1. 여기서 마지막줄의
def message_length(self, post):
에 대해서 post에 들어갈 값은 구체적으로 어디에서 비롯될까요?
질문2. self, post라고 한 것중에 self는 class에서 상속받아 쓸때 반드시 의무적으로 써줘야하는 것으로 알고있습니다. 하지만 post의 경우에는 admin.register(Post)라고해서
근본적으로 models.py(모델단)에서 Post라는 클래스를 가져와서 사용하는 것이기 때문에 post라고 이름붙여 준 것일까요?
답변 1
1
안녕하세요.
ModelAdmin 클래스의 list_display에는 모델 필드명 뿐만 아니라,
그 ModelAdmin 클래스의 멤버함수도 지정할 수 있습니다.
list_display 리스트에 멤버함수 이름을 지정하실 경우,
ModelAdmin에서 그 멤버함수를 호출할 때, 모델 인스턴스를 첫번째 인자로 지정해서 호출합니다.
PostAdmin은 Post모델에 대한 ModelAdmin이니까
그 인자는 Post 모델의 인스턴스가 될 것이구요.
그 이름을 instance로 쓰셔도 되지만
Post 모델의 인스턴스이기에 post 이름으로 지정한 것입니다.
그리고, 파이썬 클래스에서 self 는 상속여부와는 관련이 없습니다.
파이썬 클래스에서 instance method는 self를 통해, 현재의 instance를 명시적으로 받습니다.
C++이나 Java와 같은 다른 언어에서는 암시적으로 this를 사용하는 데요. 역할은 동일합니다.
살펴보시고, 또 질문 남겨주세요.
화이팅입니다. :-)