Django - ninja Schema 에서 Foreign key field value 값도 같이 가져오기

영문으로 된 질문은 Foreign key field value instead of id without nesting schemas?

즉, Schema 만들때 외부키로 연결된 모델의 필드 값을 같이 볼 수 있도록 하는 방법, 그러나 nesting 되기를 원하지 않는다.

 

그냥 쉽게 하면 nesting으로 되기 때문에 중괄호 안에 또 중괄호가 생겨서 그 값을 가져와야 한다. 

그냥 장고 템플릿에서 하는 것 처럼 "외부키__필드명" 이런형태로 막 가져오면 좋으련만 그르케 되지 않네

 

참고로, nesting 된다는 의미는 아래 결과 값을 참고하면 금방 알 수 있다. dep 밑에 dep 필드 가져오려면 복잡해 지제

{
    id: 1000,
    name: 'Some name',
    dep: {
        dep: 'Some Text'
        }
        
}

 

그냥 dep_dep 이런식으로 가져오는게 좋아 보이는데 방법은, 

모델 정의에서 property를 정의해두고 Model Schema를 만들면 된다고 하네.

 

https://github.com/vitalik/django-ninja/issues/291

먼저 아래처럼 @property를 정의해 둔다.

you can add some property for student for department name:

 class Student(models.Model):
    ...
    @property
    def dep_name(self):
           return self.dep.dep

 

위에서 정의한 property 이름의 변수를 schema 에 정의하면 바로 접근이 가능하다.

use that property in schema:

 class StudentOut(Schema):
    id: int
    name: str
    dep_name: str
    # or dep: str = Field(..., alias='dep_name')

 

끝.

이게 영어로 nesting doll 이네 캬

cottonbro 님의 사진, 출처: Pexels