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

일단 해보기·2022년 4월 18일

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 클래스의 밑에 넣으면 사진을 한장밖에 첨부할수 없으니 주의하자!!

profile
잘 모를때는 일단 이것저것 해보는 타입..

0개의 댓글