2012-03-29 148 views
1

可以說我想給用戶選擇從中選擇並確保提交的值是可用選項。Django - 選擇與模型(FKs)

我一直在閱讀文檔,在我看來:如果你的值不會改變,那麼使用choices - 如果你的數據是動態的,那麼使用models

雖然我有點不確定,不應該models被選爲choices,因爲他們在DB中強制執行某種約束?

+2

你不想簡單的性別選擇的模型 – okm 2012-03-29 02:24:28

回答

2

models通過數據庫強制約束。 choices通過代碼強制約束。您選擇哪個取決於您想要選擇哪個選項。

+0

嗯,是我所提到的,在我的問題,但 - 定的選項(DB /戰略/性能/等)不應該在數據庫中的一個約束來更好? – RS7 2012-03-29 01:53:50

+0

爲什麼你認爲FK必須比一套固定的值更有效? – 2012-03-29 01:55:16

+0

我不是那個意思 - 表現在某種意義上說,您的方案將允許一個可接受的性能下降。關於我的問題的思考多一點,也許我應該會問,爲什麼沒有任何限制放置在DB的選擇。 – RS7 2012-03-29 04:46:37

4

使用models當你肯定需要其中之一:

  • 能力輕鬆地編輯(添加,刪除)的選擇,無需重新加載代碼;
  • 能夠存儲任何選擇的附加信息;
  • 簡單的多對多關係(並通過它過濾)
  • 在不同情況下使用動態選擇子集的能力。

否則使用choices