/ / Django Model - избор срещу чужд ключ? - django, django-модели

Джанго модел - избор срещу чужд ключ? - django, django-модели

Разбирам, че в Джанго 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 с нов модел би бил по-добър.