form example cities choices and django

example - django forms choicefield



ChoiceField en el modelo Django (1)

ChoiceFields se almacena en la base de datos como los valores, por lo que para tomar un ejemplo de la documentación :

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 un día decides cambiar el nombre de los que son como este *:

class Foo(models.Model): GENDER_CHOICES = ( (''M'', ''Homme''), (''F'', ''Femme''), ) gender = models.CharField(max_length=1, choices=GENDER_CHOICES)

Entonces, en cualquier lugar que utilice los valores expandidos ''Hombre'' o ''Mujer'' ahora tendrá ''Homme'' o ''Mujer''.

Si desea cambiar los valores (es decir, ''M'' y ''F'') ellos mismos, entonces querrá actualizar la base de datos, así que si desea cambiar ''M'' a ''H'', entonces debería usar la update :

Foo.objects.filter(gender = ''M'').update(gender = ''H'')

A menos que tenga una buena razón para hacerlo, evitaría hacer esto, ya que deberá asegurarse de que su cambio a GENDER_CHOICES y su consulta de update se realicen simultáneamente.

* Y sí, esto sé que es una forma estúpida de hacer la traducción.

Supongamos que tengo un campo de elección en mi modelo de django que consta de varias opciones. Ahora en el futuro, si cambié la opción existente (opción) con algún otro nombre (opción), entonces, ¿también cambiarán los registros existentes en el modelo con esa opción (opción)? ¿O en la página de administración necesito configurar esa nueva opción manualmente?

¿Cómo puedo conseguir esto?