
post를 등록하고 그 후에 comment를 했던 기존 방식과 달리 post와 comment를 동시에 등록하는 형식을 하고 싶다고 하셨다.
즉, ForeignKey로 되어 있는 것을 동시 생성해야 한다는 것이다.
class Post(models.Model):
title = models.CharField(
verbose_name='제목',
max_length=80,
)
content = models.TextField(
verbose_name='내용'
)
created_at = models.DateTimeField(
verbose_name='작성일'
)
created_by = models.CharField(
verbose_name='작성자',
max_length=100
)
class Comment(models.Model):
comment_title = models.ForeignKey(to=Post, on_delete=models.CASCADE)
comment_content = models.CharField(max_length=100)
form.html에서 입력한 title, content, created_by를 가져오고,
이를 Post객체에 넣어준다.
여기서, Django의 create함수에 대해서 알아봤는데, 객체를 생성하고 DB에 값을 넣어주기까지 한다는 것을 다시 보았다.
그리고 Comment 에는 ForeignKey로 Post를 가지고 있기 때문에 Comment에 하나의 데이터를 생성하기 위해
Post.objects.create(
title=title,
content=content,
created_by=created_by,
created_at=now,
)
이 객체를 post로 담아주고 comment_title=post 라고 넘겨주면 된다.
def create(request):
if request.method == 'POST':
now = datetime.now()
title = request.POST['title']
content = request.POST['content']
created_by = request.POST['created_by']
post = Post.objects.create(
title=title,
content=content,
created_by=created_by,
created_at=now,
)
Comment.objects.create(
comment_title=post,
comment_content=content
)
return redirect('/')
else:
context = {'title': '글 등록', 'submit_text': '등록하기'}
return render(request, 'form.html', context)