TIL 240524

hyeo71·2024년 5월 24일
0

2024 내배캠 AI 트랙

목록 보기
101/108

Chapter model

기존 Book model의 content를 지우고 해당 테이블에는 id, 책 제목, 작성자, 좋아요, 작성날짜, 수정날짜만을 가진 생성한 소설책을 저장하고 이에 대한 내용은 chapter를 사용하여 저장하는 방법을 사용

book_idchapter_numcontent
11xxx
12xxx
13xxx
21xxx
22xxx

위와 같은 형식
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)

0개의 댓글