Django'da, ORM'nin MySQL veya PostgreSQL'deki ENUM türünü desteklemediğini anlıyorum, çünkü bu aslında bir MySQL uzantısıydı ve diğer DB türleri arasında taşınabilir değil. Yani iki seçenek, modelinize "seçimler" argümanını kullanmak veya bir yabancı anahtar referansı kullanmaktır.Django Modeli - yabancılara karşı seçenekler mi?
Bu yaklaşımların artıları ve eksileri nelerdir? devlet için ve ayrı tabloyu kullanarak karşı sebebi ne isimler, ve yabancı anahtarlar gibi bir şey için
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
...
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
Ancak: cinsiyet gibi bir şey için
, sana "seçimler", örneğin kullanmak istiyorsunuz varsayalım bu masaya?state = models.ForeignKey(AustralianState)
Biri diğerine karşı hangi koşullarda kullanırdınız?
Alkış,
Bu performans nedenleriyle mi? Hmm, bu yüzden çok sayıda devlet için, bir FK arama tablosunun gideceği yolun var mı? Ve sonra devletleri bir Django fikstüründe listeleyeceksin? – victorhooi
Bu çok fazla performans nedeni değil - birkaç binden fazla seçeneğe bakmadığınız sürece performans muhtemelen tuple kıyasla daha iyidir - çoğunlukla bakım sorunudur. Aslında Django'nun, yerellerin altında yerleşik birçok ülke/eyalet alanı var. Ve sanırım başka dosyalara aktardığınız bir StateField oluşturabilirsiniz. Tam açıklama: Uygulamaların bazı bölümlerinde kullandığım ülke ve eyalet alanlarının aslında bunun yerine seçenekler kullanacağından eminim. Ancak FK de iyi bir seçim olurdu. –
Bu durumda, ülke ve eyalet kısaltmasının, artan bir tam sayı yerine yabancı anahtar olarak kullanılmasını çok daha anlamlı buluyorum. –