2010-05-21 33 views
15

假設,我想記錄用戶每天說的投票選擇。在這種情況下,我有一個名爲vote的表,它具有列pollchoiceuser-id。那麼我怎樣才能得出約束條件(可能在django模型或任何可能的情況下)polluser-id對於任何條目都不應該是相同的,但是像同一個用戶可以爲不同的民意調查投票一次,顯然不同的用戶可以投票支持同一輪投票。我希望我很清楚。Django - 爲兩個或更多字段一起創建一個唯一的數據庫約束

+0

可能重複[如何定義兩個領域的「獨一無二」的夫婦(http://stackoverflow.com/questions/2201598/how-to-define-two -fields-unique-as-couple) – ecampver 2013-10-26 04:01:28

回答

26

Meta類模型的的unique_together屬性是你在找什麼:

class Meta: 
    unique_together = ('poll', 'user_id') 

檢查django docs以獲取更多信息。

+1

你需要在兩個緊密的括號之間逗號,我認爲'unique_together =((''poll','user_id'),''。 – 2010-05-21 11:23:44

+0

哦,是的...謝謝 – sebpiq 2010-05-21 12:48:24

+0

其實這不是必須的:https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together – dialex 2013-03-16 18:39:28

0
+0

據我所知,你可以建議編輯這個答案如果它不以某種方式讓你滿意。那麼這將被接受,假設你的建議編輯不是垃圾,你將爲世界貢獻一些積極的東西。當[接受的答案](http://stackoverflow.com/a/2881073/111777)仍然正確時,下調3年的答案似乎有點不必要,但我想這是您的特權。 – 2013-09-03 12:52:43

+0

你必須同意,答案只是一個句子與鏈接,這個鏈接被打破不是一個很好的答案,是嗎? :)相反有一個接受和鏈接是正確的。這就是爲什麼我認爲我不尊重他人。 – Drachenfels 2013-09-23 14:45:36