2010-01-10 29 views
5

我在模型中有一个字段,我希望用户感觉他们可以写入任意数量的文本。Django在模型中提供了一个CharField和一个TextField。我假设其中的一个是char(max_length),另一个是内部的varchar。模型中Django Textfield的合适性

我很想使用TextField,但由于它不尊重max_length,所以我有点担心某人将大量数据转储到其中并对我的服务器执行DOS操作。我应该如何处理这个问题?

谢谢!

回答

7

模型中的字段仅表示数据存储在数据库中的方式。

您可以非常容易地在表单中执行最大长度来验证用户的输入。喜欢这个。

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

这将确保用户可以成功输入的最大长度为16k。

+0

太糟糕了,我希望我可以在不修改表示的情况下使用ModelForm。我喜欢将幻数全部保存在一个地方:-) – SapphireSun 2010-01-10 10:42:19

+0

实际上,您仍然可以使用ModelForm并为该字段进行自定义。请参阅http://docs.djangoproject.com/en/1.1/topics/forms/modelforms/#overriding-the-default-field-types – 2010-01-10 10:48:31

+0

它应该说widget = forms.Textarea而不是forms.TextArea。 – 2010-04-12 21:47:55