2010-01-10 4 views
5

У меня есть поле в модели, которое я хочу, чтобы пользователи чувствовали, что могут писать произвольное количество текста. Django предоставляет CharField и TextField в моделях. Я предполагаю, что разница в том, что один из них - char (max_length), а другой - varchar внутри.Соответствие текстового поля Django в модели

У меня возникает соблазн использовать TextField, но поскольку он не соответствует max_length, я несколько опасаюсь, что кто-то сбрасывает в него множество данных и DOSing моего сервера. Как мне с этим бороться?

Спасибо!

ответ

7

Поля в модели представляют собой способ хранения данных в базе данных.

Вы можете очень легко обеспечить максимальную длину в форме, которая будет проверять вход пользователя. Как это.

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

Это позволит убедиться, что пользователь максимальной длины может успешно ввести 16k.

+0

Жаль, что я могу просто использовать ModelForm без изменения представления. Мне нравится хранить магические числа в одном месте :-) – SapphireSun

+0

На самом деле вы все равно можете использовать ModelForm и просто настроить его для этого поля. См. Http://docs.djangoproject.com/en/1.1/topics/forms/modelforms/#overriding-the-default-field-types –

+0

Он должен сказать widget = forms.Textarea вместо forms.TextArea. –

Смежные вопросы