16.[DRF] Nested Serializer
장고로 중첩 게시판을 구현하는 도중에 필요해서 공부하게 되었다
중첩게시판 뿐만 아니라 대댓글에도 비슷하게 적용할 수 있다
class Board(models.Model):
title = models.TextField(max_length=70, null=True, blank=True, verbose_name="제목")
content = models.TextField(max_length=700, null=True, blank=True, verbose_name="내용")
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name="작성자")
**parent = models.ForeignKey('self', related_name='reply', on_delete=models.CASCADE, null=True, blank=True)**
created = models.DateTimeField(auto_now_add=True, verbose_name="작성일")
class BoardSerializer(serializers.ModelSerializer):
reply = **serializers.SerializerMethodField()**
class Meta:
model = Inquiry
fields = ('id', 'user', 'title', 'content', 'created', 'reply' )
def get_reply(self, instance):
# recursive
serializer = self.__class__(instance.reply, many=True)
serializer.bind('', self)
return serializer.data
- views.py는 평소랑 같이 작성하면 됨