ChoiceFields se almacenan en la base de datos como los valores, por lo que tomar un ejemplo de the documentation:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
La base de datos almacenará 'M' y 'F', por lo que si algún día decide cambiar el nombre de las personas como esto *:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Homme'),
('F', 'Femme'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
A continuación, en cualquier lugar que utilizar los valores expandidos 'masculino' o 'femenino' tendrá ahora 'Homme' o 'Femme'.
Si quiere cambiar los valores (es decir, 'M' y 'F'), entonces querrá actualizar la base de datos, así que si quiere cambiar 'M' a 'H', entonces usted ' d uso update
:
Foo.objects.filter(gender = 'M').update(gender = 'H')
a menos que tenga una buena razón para, yo evitaría hacer esto - ya que necesitará para asegurarse de que su cambio a GENDER_CHOICES
y la consulta update
se realizan simultáneamente.
* Y sí, esto sé que esta es una manera estúpida de hacer la traducción!