기존 Book model의 content를 지우고 해당 테이블에는 id, 책 제목, 작성자, 좋아요, 작성날짜, 수정날짜만을 가진 생성한 소설책을 저장하고 이에 대한 내용은 chapter를 사용하여 저장하는 방법을 사용
book_id | chapter_num | content |
---|---|---|
1 | 1 | xxx |
1 | 2 | xxx |
1 | 3 | xxx |
2 | 1 | xxx |
2 | 2 | xxx |
위와 같은 형식
chapter_num는 id 처럼 자동으로 증가하되 book_id가 같을 경우에만 자동으로 증가하고 새로운 book_id가 생성되면 1로 초기화
class Chapter(models.Model):
chapter_num = models.PositiveIntegerField(editable=False)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
book_id = models.ForeignKey(Book, on_delete=models.CASCADE, related_name="chapters")
def save(self, *args, **kwargs):
if not self.id:
last_index = (
Chapter.objects.filter(book_id=self.book_id).order_by("index").last()
)
if last_index:
self.chapter_num = last_index.chapter_num + 1
else:
self.chapter_num = 1
super(Chapter, self).save(*args, **kwargs)