2010-01-10 11 views
5

Tengo un campo en un modelo en el que quiero que los usuarios sientan que pueden escribir una cantidad arbitraria de texto. Django proporciona un campo de caracteres y un campo de texto en los modelos. Supongo que la diferencia es que uno de ellos es un char (max_length) y el otro es un varchar internamente.Idoneidad de un campo de texto de Django en un modelo

Estoy tentado de utilizar TextField, pero como no respeta max_length, soy algo cauteloso con alguien que descargue un montón de datos en él y con DOSing mi servidor. ¿Cómo debería lidiar con esto?

Gracias!

Respuesta

7

Los campos del modelo solo representan la forma en que se almacenan los datos en la base de datos.

Puede aplicar fácilmente la longitud máxima en forma que validará la entrada de los usuarios. Me gusta esto.

class InputForm(forms.Form): 
    text = forms.CharField(max_length=16384, widget=forms.TextArea) 
    ... 

Esto asegurará que la longitud máxima que el usuario puede ingresar con éxito es de 16k.

+0

Lástima, me gustaría poder usar ModelForm sin modificar la representación. Me gusta mantener los números mágicos en un solo lugar :-) – SapphireSun

+0

En realidad, todavía puedes usar ModelForm y simplemente personalizarlo para ese campo. Consulte http://docs.djangoproject.com/en/1.1/topics/forms/modelforms/#overriding-the-default-field-types –

+0

Debería decir widget = forms.Textarea en lugar de forms.TextArea. –

Cuestiones relacionadas