我明白,在Django中,ORM不支持MySQL或PostgreSQL中的ENUM類型,因爲這最初是一個MySQL擴展,並且不能跨其他數據庫類型移植。因此,這兩個選項是對模型使用「選擇」參數,或使用外鍵引用。Django模型 - 選擇與外鍵?
這些方法的優缺點是什麼?
對於像性別,我想你會用「選擇」,例如:
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
...
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
然而,對於類似國家的名字,是什麼支持和反對使用一個單獨的表的原因,和外鍵到那張桌子?
state = models.ForeignKey(AustralianState)
在什麼情況下你會使用其中一種?
乾杯, 維克多
這是出於性能的原因?嗯,對於很多州來說,我想FK查找表是要走的路嗎?然後你只需在Django裝置中列出狀態? – victorhooi 2010-10-26 06:28:47
這不是性能方面的原因 - 用元組的性能可能會更好,除非你看到的選擇多於幾千個 - 它主要是維護問題。事實上,我相信Django在地區內有很多國家/州的字段。我想你可以創建一個你導入到其他文件的StateField。充分披露:我很確定我在我的應用程序的某些部分使用的國家/地區和州/地區實際上確實使用了選擇。但FK也是一個不錯的選擇。 – 2010-10-26 18:22:30
我想補充一點,在這種情況下,使用國家和州縮寫作爲外鍵,而不是遞增整數,這使得更有意義。 – 2010-10-26 18:23:25