개인 과외사이트 Q/A 게시판 만들기

Todo를 기초적으로 완성했으니 학생들이 질문과 답변을 남길수 있는 QnA 게시판을 만든다.

모델은 Question과 Answer클래스로 나누고, 질문에 스샷을 첨부할수 있도록 Image 클래스를 만들어서 Foriegnkey로 qestion과 연결해준다.

class Question(models.Model):
    subject = models.CharField(max_length=200, verbose_name='질문제목')
    content = models.TextField(verbose_name='질문내용')
    create_date = models.DateTimeField(auto_now=True, verbose_name='작성일시')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    modify_date = models.DateTimeField(auto_now=True)
    
    def __str__(self):
        return self.subject
    
    def get_absolute_url(self):
        return reverse("board:detail", kwargs={"question_id": self.id})
    
    
    
    
class Answer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='답변제목')
    content = models.TextField(verbose_name='답변내용')
    create_date = models.DateTimeField(auto_now=True, verbose_name='작성일시')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    modify_date = models.DateTimeField(auto_now=True)
    
class Image(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='imagepost')
    image= models.ImageField(upload_to='board/images', verbose_name='photo', blank=True)

이렇게 구성하면 Answer, Image는 Quesion의 id에 종속되어서, qeustion이 삭제될경우 같이 삭제된다 (on_delete=models.CASCADE)

만약 Image 클래스를 별도로 만들지 않고 Question 클래스의 밑에 넣으면 사진을 한장밖에 첨부할수 없으니 주의하자!!

좋은 웹페이지 즐겨찾기