Ninja 정참조 구현
models.py는 Comment 테이블에서 Post 테이블을 정참조 함
schema.py는 댓글(Comment)에서 게시글(Post) 정보를 하위 항목으로 조회 한다.
# models.py
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(max_length=300)
class Comment(models.Model):
message = models.CharField(max_length=20)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
# =====================================================
# schema.py
class PostSchema(Schema):
title: str
content: str
class CommentSchema(Schema):
message: str
post: PostSchema
Ninja 역참조 구현
역참조를 하기 위해선
models.py에서 related_name을 선언해주어야 한다. (꼭 _set이 아닌, "my_comment" 이런식으로 작성해도 가능)
schema.py에서 post에 comments를 pydantic Field의 alias인자로 related_name을 불러온다.
schema.py에서 comment에 가지고 있던 post 필드를 포함하지 않아야 한다.
# models.py
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(max_length=300)
class Comment(models.Model):
message = models.CharField(max_length=20)
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="postcomment_set")
# =====================================================
# schema.py
class PostSchema(Schema):
title: str
content: str
comments: List[CommentSchema] = Field(..., alias='postcomment_set')
class CommentSchema(Schema):
message: str
'Python > Django Ninja' 카테고리의 다른 글
[Django Ninja] CRUD 예제 (+bulk) (0) | 2023.05.29 |
---|---|
[Django Ninja] GIS 데이터 처리 관련 정리 (0) | 2023.05.24 |
[Django Ninja] 커스텀 Pagination 모듈 구현기 (0) | 2023.04.16 |
[Django Ninja] API Docs에서 Enum 드롭 다운 표시하기 (0) | 2023.04.09 |
[Django Ninja] Schema 비교 (Schema, ModelSchema, CreateSchema) (0) | 2023.02.27 |