Django模型 - 选择与外键?

vic*_*ooi 21 django django-models

据我所知,在Django中,ORM不支持MySQL或PostgreSQL中的ENUM类型,因为它最初是MySQL扩展,并且不能在其他数据库类型中移植.因此,两个选项是对模型使用"choices"参数,或使用外键引用.

这些方法的优点和缺点是什么?

对于像性别这样的东西,我假设你会使用"选择",例如:

GENDER_CHOICES = (
    ('M', 'Male'),
    ('F', 'Female'),
)
...
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
Run Code Online (Sandbox Code Playgroud)

但是,对于像州名这样的东西,使用单独的表和该表的外键的原因是什么?

state = models.ForeignKey(AustralianState)
Run Code Online (Sandbox Code Playgroud)

在什么情况下你会使用一个与另一个?

干杯,维克多

Gab*_*aru 16

我会选择选择不会随时间变化的选择.如果他们愿意的话,拥有新车型的FK会更好.


Jor*_*ter 7

当潜在选择的数量很大时,您还应该考虑外键。这是考虑对国家或州使用 FK 的原因之一。否则,您实际上是在源代码中硬编码了大量数据。