Разбирам, че в Джанго ORM неподдържат типа ENUM в MySQL или PostgreSQL, тъй като това е първоначално разширение на MySQL и не е преносимо в други DB типове. Така че двете опции трябва да използват аргумент "избор" към вашия модел или да използвате референция за чужд ключ.
Какви са предимствата и недостатъците на тези подходи?
За нещо като пол, предполагам, че ще използвате "избор", например:
GENDER_CHOICES = (
("M", "Male"),
("F", "Female"),
)
...
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
Но за нещо като име на държавата, каква е причината за и против използването на отделна таблица и чужди ключове към тази маса?
state = models.ForeignKey(AustralianState)
При какви обстоятелства бихте използвали един срещу друг?
Наздраве, победител
Отговори:
3 за отговор № 1Трябва също така да разгледате чужди ключове, когатоброят на потенциалните избори е голям. Това е една от причините да обмислите използването на FK за държави или държави. В противен случай, вие ефективно твърдо кодирате много данни във вашия изходен код.
14 за отговор № 2
Бих използвал избори, където изборът не би се променил с течение на времето. Ако биха го направили, един FK с нов модел би бил по-добър.