jsonfield - documentacion de django
Ventajas de usar URLField sobre TextField? (3)
Prueba 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)
Según tengo entendido, siempre debes usar un TextField
para una cadena de longitud variable cuando usas una base de datos PostgreSQL porque la diferencia de velocidad entre un TextField
y un CharField
es insignificante 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 con el uso de URLField
. ¿Se consideraría una mala forma usar un TextField
lugar de un URLField
para las URL?
URLField es realmente CharField con soporte de la comprobación de patrones de URL basada en Regexp y un validador en línea (que fue reemplazado por un validador basado en RegEx), puede usar TextField si no le importa la limitación de longitud 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 se 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 input. En el lado de PostgreSQL, no hay una diferencia significativa.
https://docs.djangoproject.com/en/dev/ref/models/fields/#urlfield Por supuesto, puedes usar CharField / TextField pero manejando la entrada del usuario y asegúrate de que todo lo que el usuario ingrese depende de ti.
Desde el código fuente:
# Al igual que con CharField, esto hará que la validación de URL se realice
Si ve el código fuente de URLField , verá que en realidad es un CharField con validador de URL.
También hay otros campos listos para usar como EmailField, ImageField, * Field!