tablas recorrer para notebook limpieza leer instalar funciones datos data crear con como comandos python django django-models django-forms

python - recorrer - Datos de limpieza que son de tipo URLField



recorrer data frame pandas (1)

Hice un experimento rápido y descubrí que puedes usar un método clean_ para eliminar los espacios clean_ / finales. Algo como esto:

# models.py class UrlModel(models.Model): link = models.URLField(verify_exists = False, max_length = 225) def __unicode__(self): return self.link # forms.py class UrlForm(ModelForm): class Meta: model = UrlModel def clean_link(self): link = self.cleaned_data[''link''] return link.strip() # shell In [1]: from test_app.forms import UrlForm In [2]: f = UrlForm(data = dict(link = '' http://google.com '')) In [3]: f.is_valid() Out[3]: True In [4]: f.save() Out[4]: <UrlModel: http://google.com>

Actualizar

Me aparece un error que dice "Ingrese un enlace válido como www.ted.com". Edité mi pregunta e incluí el modelo y el formulario en cuestión.

Verifiqué que tu clase de formulario da el error.

Después de hacer un pequeño cambio, pude hacerlo funcionar. Todo lo que hice fue eliminar el title personalizado y los campos de link . Estamos trabajando con un formulario modelo aquí y el modelo subyacente ya tiene estos campos. Creo que la redefinición llevó a que se generara un error de validación antes de invocar el método de limpieza personalizado.

class StoryForm(forms.ModelForm): class Meta: model = Story fields = (''title'', ''link'') def clean_link(self): link = self.cleaned_data[''link''] return link.strip()

Aquí hay algunos ejemplos de salida del shell:

In [1]: from test_app.forms import StoryForm In [2]: data = dict(title="Google story", link = " http://google.com ") In [3]: f = StoryForm(data) In [4]: f.is_valid() Out[4]: True In [5]: f.save() Out[5]: <Story: Google story http://google.com>

Tengo un URLField simple en mi modelo

link = models.URLField(verify_exists = False, max_length = 225)

Me gustaría quitar los espacios iniciales y finales del campo. No creo que pueda hacer esto en "clean_fieldname" o en el método "clean".

¿Necesito subclasificar el "URLField" y eliminar los espacios en el método to_python? ¿Hay una mejor manera de hacer esto sin ninguna subclasificación?

Editado

Esta es mi forma

class StoryForm(forms.ModelForm): title = forms.CharField(max_length=225, error_messages={''required'' : ''Enter a title for the story''}) link = forms.URLField(max_length=225, error_messages={''required'' : ''Enter a link to the story'', ''invalid'' : ''Enter a valid link like www.ted.com''}) class Meta: model = models.Story fields = (''title'', ''link'') def clean_link(self): link = self.cleaned_data[''link''] return link.strip()

y mi modelo

class Story(models.Model): title = models.CharField(max_length = 225) link = models.URLField(verify_exists = False, max_length = 225)