私はコメントシステムを構築して投票を実装しようとしています。だから私は新しいコメントオブジェクトを作成するcomment = Comment.objects.create(comment_text=ajax_comment, author=str(request.user), destination=id)
行で、私はupvotesフィールドを追加したいと思います。したがって、オブジェクトが作成されるときにupvotes=0
。これはどうすればいいですか?あなたが何をしたいか新しいインスタンスが作成されたときにForeignKeyフィールドを割り当てる方法
models.py
class Comment(models.Model):
user = models.ForeignKey(User, default=1)
destination = models.CharField(default='1', max_length=12, blank=True)
author = models.CharField(max_length=120, blank=True)
comment_id = models.IntegerField(default=1)
parent_id = models.IntegerField(default=0)
comment_text = models.TextField(max_length=350, blank=True)
timestamp = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return self.comment_text
class CommentScore(models.Model):
user = models.ForeignKey(User, default=1)
comment = models.ForeignKey(Comment, related_name='score')
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
def __str__(self):
return str(self.comment)
views.py
comment_list = Comment.objects.filter(destination=id)
score = CommentScore.objects.all()
if request.is_ajax():
if comment.is_valid():
comment = Comment.objects.create(comment_text=ajax_comment, author=str(request.user), destination=id)
print(comment)
comment.save()
username = str(request.user)
return JsonResponse({'text': ajax_comment, 'text_length': comment_length, 'username': username})
else:
print(comment.errors)
context = {
'score': score,
'comment_list': comment_list,
}
return render(request, 'article.html', context)
'upvotes'フィールドは既に' CommentScore'モデルにあります。 "upvotesフィールドを追加する"とはどういう意味ですか? –
私は投票のための別々のモデルを作るように言われました。人々が何度もコメントに投票し、何回投票したのかを警察に警告するからです。だから私はそれをして、今私は2つのモデルをマージしようとしています。だから、 'Comment'が作成されたら' CommentScore'の 'ForeignKey'を追加して、' upvotes = 0'フィールドを追加し、誰が 'CommentScore'の' user'フィールドで投稿をupvotedしたのかを知りたいと思います。何か案が? – Zorgan
"up votes"と "down vote"は、コメントオブジェクトが既に作成された後に発生します。したがって、コメントが作成され、別のユーザーがオブジェクトに到達して投票または投票を選択すると、フロントエンドはバックエンドを呼び出してCommentオブジェクトのキーを使用してCommentScoreオブジェクトを作成する必要があります。 –