我的模型中有一个简单的URLField
link = models.URLField(verify_exists = False, max_length = 225)我想从场地上去掉前部和后部的空位。我不认为我可以在"clean_fieldname“或”干净“方法中做到这一点。
我需要子类"URLField“并删除to_python方法中的空格吗?有没有更好的方法来做到这一点,没有任何子类?
编辑的
这是我的表格
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()我的模型
class Story(models.Model):
title = models.CharField(max_length = 225)
link = models.URLField(verify_exists = False, max_length = 225)发布于 2010-09-06 18:34:46
我做了一个快速实验,发现您确实可以使用clean_方法删除前导/尾随空格。就像这样:
# 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>更新
--我收到一个错误,上面写着“输入有效的链接(如www.ted.com)”。我编辑了我的问题,并包括了模型和形式的问题。
我验证了表单类确实给出了错误。
在做了一个小小的改变后,我才能让它发挥作用。我所做的就是删除自定义的title和link字段。我们在这里使用一个模型表单,底层模型已经有了这些字段。我认为重新定义会导致在调用自定义clean方法之前引发验证错误。
class StoryForm(forms.ModelForm):
class Meta:
model = Story
fields = ('title', 'link')
def clean_link(self):
link = self.cleaned_data['link']
return link.strip()下面是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>https://stackoverflow.com/questions/3653423
复制相似问题