私はdjangoを学んでいて、簡単なQuestion-Answerアプリケーションを作成しようとしています。ここでユーザーは質問や回答も好きです。今、私が何をしたいのか、特定の質問を言っていたトラックは、私は次のようにこれを追跡するための別のモデルを作成した/そう答えです:Python Djangoモデルの基礎
class Votes(models.Model):
answer_id = models.ForeignKey(Answers, related_name='likes_answers', null=True, default=None, db_column='answer_id')
question_id = models.ForeignKey(Questions, related_name='likes_questions', null=True, default=None, db_column='question_id')
likes_count = models.IntegerField(blank=True, default=0)
liked_by = models.ForeignKey(User, related_name='like_user', null=True, default=None, on_delete=models.CASCADE)
今、このアプローチの問題は、毎回質問や答えが気に入っているということですこのモデルには、異なるユーザーと同じquestion_idまたはanswer_idの複数のエントリを作成するエントリがあります。ユーザーは異なっていますが、多くのanswer_idsとquestion_idsが繰り返されています...正しいアプローチですか、それとも改善することができますか?
"answer_id"ではなく単に "answer"と呼んでください。 Djangoは自動的に "_id"パートをバックグラウンドで追加します。また、 "lik_by"ではなく "user"と関連する名前を "likes"と呼ぶべきで、 'user.likes.all()'などもできます。 'answer'と' question'と同じです。最後に、モデルは単数形を常に使用する必要があります。したがって 'class Vote(models.Model)'ではなく 'Votes 'でなければなりません。 – C14L
ヒント@ C14Lをありがとう、私はそれを世話します。私はdjango rest frameworkシリアライザを使っているので、question_idを使用しました。これをJSONのキーとしてクライアントに送信したいのです。つまり、{"question_id":}です。質問を使用すると、{"question":}として送信されますが、これは混乱します。シリアライザのフィールド名とキーが異なる方法はありますか? –
はい、あります。データベースレベルではなく、DRFのREST APIフィールドの「命名」を行う必要があります。 – C14L