¿Hay alguna manera fácil de hacerlo?Establecer el atributo de opciones de campo del modelo en tiempo de ejecución?
Respuesta
Puede configurar las opciones atribuyen a cualquier iterable: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices
No he probado esto por mí mismo así que no estoy seguro de que cuando las opciones atributo es en realidad evaluados, pero que puede ser capaz de asignar un generador función que calcularía tus elecciones deseadas.
También puede investigar el uso de la señal Modelo post_init: http://docs.djangoproject.com/en/1.1/ref/signals/#post-init
Esto le dará acceso a su modelo después de Django ha inicializado y por lo que podría configurar las opciones en ese momento. Probablemente quiera pasar por la interfaz "_meta" de la siguiente manera:
instance._meta.get_field_by_name('FIELD_NAME')[0].choices = [<choices>...]
Eso casi funcionó. Puedo ver las opciones actuales, pero si intento establecer un valor diferente, aparece el error: AttributeError: no se puede establecer el atributo. –
Al buscar en la fuente de los campos, puede ver que "elecciones" es una propiedad de solo lectura: http://code.djangoproject.com/browser/django/tags/releases/1.1.1/django/db/models /fields/__init__.py#L296 Intenta establecer en "_choices" en su lugar. Esto funciona en el caparazón, pero no daré ninguna garantía sobre las consecuencias involuntarias. –
¡SÍ! Funciona para mi. Gracias un montón. –
Establezca las opciones in __init__()
.
Lo siento, no estaba claro. Me refería a establecer/cambiar el atributo de opciones después de que se haya inicializado un modelo. –
- 1. Cambie el parámetro del atributo en el tiempo de ejecución
- 2. Cambie el parámetro del atributo personalizado en tiempo de ejecución
- 3. Configuración del atributo href en tiempo de ejecución
- 4. Opciones de cascada de JPA en tiempo de ejecución
- 5. Mismo campo, diferentes opciones en las subclases del modelo Django
- 6. Obtiene el campo de formulario de Django del campo modelo
- 7. ¿Cómo establecer el valor del cuadro de texto del informe de cristal en tiempo de ejecución?
- 8. Django opciones de campo de formulario, añadiendo un atributo
- 9. Opciones de campo modelo Django: ¿no sería mejor un dict?
- 10. Modelo de Django eliminar el atributo "requerido" basado en otra opción de campo
- 11. Opciones para identificar objetos de manera única en el tiempo de ejecución?
- 12. Tiempo de ejecución del programa
- 13. Cómo validar el atributo de fecha de un modelo con un rango específico (evaluado en tiempo de ejecución)
- 14. Establecer el tiempo de espera del unicornio
- 15. Establecer el tiempo máximo de ejecución para exec() específicamente
- 16. Cómo establecer java.net.preferIPv4Stack = true en tiempo de ejecución?
- 17. Cómo detectar cambios de atributo del modelo?
- 18. opciones de campo() como queryset?
- 19. Django: Establecer el widget predeterminado en la definición del modelo
- 20. Establecer el orden de iteración varía de ejecución a ejecución
- 21. Ejecución del código de tiempo en Android
- 22. ¿Cómo establecer opciones en dinámico con el campo de elección de Django?
- 23. Atributo Django "last_login" en el modelo auth_user
- 24. ¿Cómo establecer el valor del campo usando id en javascript?
- 25. Establezca el ancho del componente Flex en 100% en el tiempo de ejecución?
- 26. atributo dependiente de otro campo
- 27. Configuración del tamaño del almacenamiento dinámico de JVM en el tiempo de ejecución
- 28. Opciones duplicadas de tiempo de ejecución de Java: ¿cuál es el orden de preferencia?
- 29. Establecer el valor del campo estático privado
- 30. cómo obtener entrada del usuario en el tiempo de ejecución
Por curiosidad, ¿cuál es su caso de uso para esto? –
Estoy tratando de sacar la lista de opciones de la base de datos. También estoy usando la traducción, y no puedo etiquetar la cadena para la traducción ya que están en la base de datos. –
¿Están estas opciones expuestas a los usuarios o solo para lógica interna? Me pregunto si esto es algo que puede manejarse a nivel de formularios, ya que es mucho más común construir elecciones dinámicas allí. Cambiar las elecciones en el nivel del modelo parece frustrar el propósito de establecer elecciones en el modelo en primer lugar. Tal vez esto se puede abordar de una manera diferente? –