個人指導サイトQ/A掲示板の作成

1521 ワード

Todoに基づいて完成し、学生たちが質問や回答を残すことができるQnA掲示板.
モデルはQuestionクラスとAnswerクラスに分けられ、スナップショットを問題にアタッチし、ForiegnKeyを使用してqessionに関連付ける画像クラスが作成されます.
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、画像はQuesionに属するidから削除され、qustionを削除するときに一緒に削除されます(on delete=models.CASCDE)
なお、Imageクラスを単独で作成せずにQuestionクラスの下部に入れると、1枚の写真しか添付できません!