Según tengo entendido, siempre debe usar un TextField
para una cadena de longitud variable cuando utiliza una base de datos PostgreSQL porque la diferencia de velocidad entre TextField
y CharField
es despreciable con PostgreSQL. Soy relativamente nuevo en Django, y estaba considerando usar un TextField
para URL de longitud variable en mi base de datos. Me preguntaba si hay ventajas de usar el URLField
? ¿Se consideraría una mala forma usar un TextField
en lugar de un URLField
para las URL?Ventajas de usar URLField sobre TextField?
Respuesta
campo URLy es en realidad CharField w/soporte del patrón basado en Regexp URL de cheques y un validador en línea (que fue reemplazado por un validador basado RegEx), se puede usar TextField si no le importa longitud-limitación de URL
from django.core.validators import URLValidator
# in model
field = models.TextField(validators=[URLValidator()])
Además, el uso de CharField o TextField depende de si desea una restricción de longitud máxima en el campo y qué tipo de elemento es más adecuado para la edición: textarea o entrada. En el lado de PostgreSQL, no hay una diferencia significativa.
https://docs.djangoproject.com/en/dev/ref/models/fields/#urlfield Por supuesto puede usar CharField/TextField pero manejando la entrada del usuario y asegúrese de que lo que el usuario ingrese depende de usted.
A partir del código fuente:
# Como con CharField, esto hará que la validación de URL para realizar
Si ve el URLField source code se encuentra en realidad es un CharField con validador URL.
También hay otros campos listos para usar como EmailField, ImageField, * ¡Campo!
Pruebe esta clase:
class LongURLField(TextField):
description = 'Long URL'
def __init__(self, verbose_name=None, name=None, **kwargs):
TextField.__init__(self, verbose_name, name, **kwargs)
self.validators.append(validators.URLValidator())
def formfield(self, **kwargs):
# As with TextField, this will cause URL validation to be performed
# twice.
defaults = {
'form_class': forms.URLField,
}
defaults.update(kwargs)
return super(LongURLField, self).formfield(**defaults)
establece max_length a 2000 y tienes el campo perfecto :) – gabn88
- 1. Ventajas de MySQLi sobre MySQL
- 2. Ventajas de usar paquetes de SSIS sobre procedimientos almacenados?
- 3. Ventajas de usar variables de condición sobre mutex
- 4. ¿Cuáles son las ventajas de usar Ruby NArray sobre Array?
- 5. Ventajas de usar attr() sobre addClass en jquery
- 6. ¿Cuáles son las ventajas de usar SVN sobre CVS?
- 7. ¿Cuáles son las ventajas de usar Objective-C sobre C++
- 8. ¿Validar EmberJS TextField sobre la marcha?
- 9. Ventajas de [HandleError] sobre Application_Error
- 10. Ventajas de Parcelable sobre JSON
- 11. Ventajas de Tesla sobre GeForce
- 12. Ventajas específicas de NServiceBus sobre RabbitMQ liso
- 13. C++/CLI: Ventajas sobre C#
- 14. Ventajas de .NET Rx sobre eventos clásicos?
- 15. Ventajas del subtipado sobre clases de tipos
- 16. ¿Cuáles son las ventajas de usar Spring Data neo4j sobre simplemente usar neo4j directamente?
- 17. Groovy ventajas sobre Jython o Jruby?
- 18. ¿Cuáles son las ventajas de usar Qt?
- 19. ¿Qué ventajas tiene PHP sobre ASP.NET?
- 20. Ventajas y desventajas de usar Storyboarding?
- 21. Ventajas de usar Doctrine para PHP?
- 22. ¿Qué ventajas tiene jQuery sobre otras bibliotecas de JavaScript?
- 23. ¿Cuáles son las ventajas de concurrent.futures sobre multiproceso en Python?
- 24. Ventajas de elegir Windows sobre Unix como plataforma de desarrollo
- 25. Uso de Redis para Pub Sub. Ventajas/Desventajas sobre RabbitMQ
- 26. Cuáles son las ventajas de MVC3 sobre MVC2
- 27. ¿Ventajas de usar la interfaz sobre la clase abstracta para el patrón de repositorio?
- 28. Ventajas de usar Rhino (rinoceronte de mozilla)
- 29. ¿Ventajas de jQuery Widget sobre el objeto JS normal?
- 30. Obtener int de textField
Para el registro, [IE no puede cargar URL de más de alrededor de 2.000 caracteres] (https://stackoverflow.com/questions/417142/what-is-the- maximum-length-of-a-url-in-different-browsers), por lo que podría simplemente establecer 'max_length' en 2000 en un' URLField' y llamarlo un día. – mlissner
¿Alguna referencia a la desactivación de URLField? – pravin
@pravin No es el campo URL, pero su validador anterior ha quedado en desuso. El validador accedía a la URL en línea para verificar, por ahora es reemplazada por un validador de expresiones regulares para verificar la validación del formato de URL. – okm