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는 평소랑 같이 작성하면 됨