¿Hay algún artículo bueno que explique campos de formulario personalizados en django, no campos de modelo personalizados? No pude encontrar ninguno a través de google.Tutorial sobre cómo escribir campos de formulario personalizados en django?
Respuesta
Los campos del formulario son fáciles de personalizar:
class UpperCaseField(forms.CharField):
def clean(self, value)
try:
return value.upper()
except:
raise ValidationError
, básicamente, que acaba de crear una clase que hereda de la materia que más se parece a lo que desea, vuelva a grabar el método clean() para que devuelva el valor que querer. He aquí otro ejemplo:
class MyObjectField(forms.ModelChoiceField):
# in this case, 'value' is a string representing
# the primary key of a MyObject
def clean(self, value):
try:
return MyObject.objects.get(pk=value)
except:
raise ValidationError
encargo widgets de, por otro lado, son un poco más útil, pero un poco más difícil de hacer porque hay unos cuantos métodos que necesitan ser escritas para que funcionen suavemente.
No es un tutorial, pero docs conversaciones de Django sobre esto un poco:
Si el incorporado en las clases de campo no satisfacer sus necesidades, usted puede crear fácilmente clases personalizadas de campo. Para hacer esto, solo crea una subclase de django.forms.Field. Sus únicos requisitos son que implementa un método clean() y que su método
__init__()
acepta los argumentos básicos mencionados anteriormente (obligatorio, etiqueta, inicial, widget, help_text).
Puede leer sobre el método de limpieza y ver un ejemplo at the django docs. Nuevamente, no es un tutorial, pero es útil.
Me parece que estoy aprendiendo mucho leyendo el código en algunos de los proyectos de la aplicación django que están disponibles, como django-extensions, que anulan los campos del formulario y son buenas herramientas de aprendizaje (para mí, al menos). Esto puede ayudarlo a comenzar.
Como siempre con el código de código abierto, aprenderá mucho leyendo la fuente en sí. Consulte el módulo django.forms.fields
para ver cómo se definen todos los campos de formulario diferentes; la mayoría de ellos ya son subclases de otros, de modo que puede replicar eso y cambiar lo que necesita.
Un enlace a la última fuente: https://github.com/django/django/blob/master/django/forms/fields.py –
- 1. ¿Cómo usar campos de formulario personalizados para campos de modelo en el administrador de Django?
- 2. Agregar campos personalizados a usuarios en django
- 3. django formulario en línea con formularios personalizados
- 4. Django agrupación de campos de formulario
- 5. formulario django con múltiples campos de archivo
- 6. ¿Cómo se ocultan dinámicamente los campos de formulario en Django?
- 7. Cómo agregar campos personalizados a InlineFormsets?
- 8. Django: ¿Reutilizar campos de formulario sin heredar?
- 9. Ruby tutorial sobre cómo escribir procedimientos almacenados para PostgreSQL?
- 10. ¿Buen tutorial introductorio sobre cómo escribir archivos sty para látex?
- 11. Campos personalizados para un formulario que representa un objeto
- 12. Agregar campos personalizados a la tabla auth_user en Django
- 13. Django - Cómo llenar previamente los campos de formulario de administrador
- 14. Cualquiera recomienda un buen tutorial sobre campos aleatorios condicionales
- 15. ¿Iterando sobre campos de formulario enviados en Flask?
- 16. Cómo escribir informes personalizados en Drupal
- 17. Orchard: campos de registro personalizados
- 18. Adición de campos adicionales al formulario de registro django
- 19. Tutorial de Django Photologue
- 20. C# tutorial para escribir gadgets
- 21. Pedidos personalizados en Django
- 22. Formulario modelo django. Incluir campos de los modelos relacionados
- 23. Tutorial en línea sobre lisp
- 24. Django, identificadores únicos para los campos de formulario
- 25. mensajes de error personalizados con Formulario tipo
- 26. ¿Dónde puedo encontrar una buena referencia/tutorial sobre cómo escribir módulos de Apache (en C)?
- 27. ¿Cómo ampliar el marco de comentarios (django) eliminando campos innecesarios?
- 28. Documentación sobre cómo escribir recetas de compilación
- 29. django - django-taggit formulario
- 30. ¿Cómo configuro los atributos HTML personalizados en formularios django?
Gracias. Creo que necesito escribir un widget personalizado porque necesito personalizar el renderizado del campo. –
Nota: clean() es responsable de ejecutar to_python(), validate() y run_validators(). Si anula clean() y no implementa esto, lo arruinará. – orokusaki
orokusaki tiene razón, si invalida clean(), al menos debería llamarlo su implementación súper con 'super (UpperCaseField, self) .clean (value)' –