Tengo un modelo de Django con algunos campos que tienen valores predeterminados especificados. Estoy buscando agarrar el valor predeterminado para uno de estos campos para nosotros más adelante en mi código. ¿Hay alguna manera fácil de obtener el valor predeterminado de un campo en particular de un modelo?¿Cómo obtengo el valor predeterminado para un campo en un modelo de Django?
21
A
Respuesta
15
se puede obtener el campo de la siguiente manera:
myfield = MyModel._meta.get_field_by_name('field_name')
y el valor predeterminado es sólo un atributo del campo:
myfield.default
35
TheModel._meta.get_field('the_field').get_default()
+2
Esta debería ser la respuesta correcta ahora. – Teekin
0
Si necesita los valores por defecto para más de una campo (por ejemplo, en algún tipo de paso de reinicialización) puede valer la pena crear una instancia de un nuevo objeto temporal de su modelo y utilizar los valores de campo de ese objeto.
temp_obj = MyModel()
obj.field_1 = temp_obj.field_1 if cond_1 else 'foo'
...
obj.field_n = temp_obj.field_n if cond_n else 'bar'
Por supuesto, esto es sólo vale la pena, si el objeto temporal se puede construir sin más problemas de rendimiento/dependencia.
9
A partir de Django 1.9.x se pueden utilizar:
field = TheModel._meta.get_field('field_name')
default_value = field.get_default()
Cuestiones relacionadas
- 1. valor predeterminado para el campo en el modelo de Django
- 2. ¿Cómo configuro el valor de campo predeterminado en el valor de otro campo en un modelo de Django?
- 3. Valor predeterminado de campo de Django AdminForm
- 4. En django, ¿cómo clasifico un modelo en un campo y luego obtengo el último?
- 5. ¿Cómo se especifica un valor predeterminado para el campo ForeignKey de Django?
- 6. Campo Django modelo predeterminado basado en otro campo en el mismo modelo
- 7. Cómo anular el valor predeterminado de un campo de modelo de una base abstracta Clase
- 8. ¿Valor predeterminado aleatorio/no constante para el campo del modelo?
- 9. ¿Cómo limitar el valor máximo de un campo numérico en un modelo de Django?
- 10. Valor predeterminado de campo del modelo de Django del método de modelo
- 11. ¿Cuál es el valor predeterminado para un campo si no se proporciona un valor predeterminado?
- 12. ¿Cómo obtengo el valor predeterminado de un tipo genérico?
- 13. Django: agregue un campo a un modelo
- 14. ¿Cómo asignar usuario actualmente conectado como valor predeterminado para un campo de modelo?
- 15. Django: cómo leer el nombre db_column de un campo modelo
- 16. Cómo seleccionar el valor predeterminado de un campo
- 17. ¿Cómo se especifica un valor predeterminado para un modelo de clave foránea de Django o un modelo de modelo de administración?
- 18. django modeltranslation - campo predeterminado?
- 19. Cómo establecer el valor predeterminado de un campo de pedido +1 del valor más alto en Django
- 20. Django: ¿Cómo establecer los valores iniciales para un campo en un formset de modelo en línea?
- 21. Dado un tipo ExpressionType.MemberAccess, ¿cómo obtengo el valor del campo?
- 22. ¿Cómo definir un valor predeterminado para establecer una costumbre Django
- 23. ¿Cómo puedo obtener todos los objetos en un modelo de Django que tienen un valor específico para un campo ForeignKey?
- 24. ¿Puede el valor predeterminado de un campo de modelo de Django ser definido por una función dependiente de un modelo padre extranjero?
- 25. ¿Cómo puedo desactivar un campo modelo en una forma Django
- 26. Agregando un campo a un modelo de Django existente
- 27. Django: valor predeterminado del campo de las instancias del modelo propio
- 28. ¿Cómo se anula el valor predeterminado de un campo en un comportamiento de destreza en Plone?
- 29. ¿Cómo asignar un valor predeterminado al campo Integerfield del modelo Django, mientras que FormField relacionado es opcional?
- 30. Personalizar Django admin Campo predeterminado de TabularInline
Cualquier cosa con un _ está cavando en la parte interna. Ver mi pregunta: http://stackoverflow.com/questions/1011946/django-know-if-property-is-the-default-value –
Hoy en día, el método 'get_field_by_name' devuelve una tupla con el objeto de campo como primer elemento. – Adam
@PaulTarjan tienes razón, pero el '_meta' es uno de esos elementos bien establecidos, no muy probables de cambiar. El consenso general es que está bien acceder a '_meta' de un modelo directamente. –