我正在學習Django,並試圖創建一個簡單的問題回答應用程序,其中用戶也可以喜歡的問題和/或答案。現在我要做的就是跟蹤誰喜歡的特定問題/答案,所以我創建了一個單獨的模型來跟蹤這個如下: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」,而只是「回答」。 Django將在幕後自動添加「_id」部分。另外,不要把它叫做「likes_by」,而是把「user」和相關的名字叫做「likes」,這樣你可以做'user.likes.all()'等等。對於'answer'和'question'也是一樣的。最後,模型應該總是使用單數,所以'class Vote(models.Model)'而不是「Votes」。 – C14L
感謝提示@ C14L,我會照顧到這一點。我使用了question_id,因爲我正在使用django rest框架序列化程序,並且我想將它作爲JSON中的鍵發送給客戶端。即{{question_id}:}。當我使用問題時,它被髮送爲{「question」:},這是令人困惑的。序列化程序中的鍵與字段名有什麼不同? –
是的,有,您應該爲DRF中的REST API字段進行「命名」,而不是在數據庫級別。 – C14L