文档说(我已经完成了)
在表单子类上调用clean_()方法-其中 替换为表单字段属性的名称。
接下来它告诉我我应该这样做(我相信我已经这样做了)
您将需要在self.cleaned_data中查找字段的值
我的表格
class CreatePostForm(forms.ModelForm):
class Meta:
model = Post
fields = (
'title', 'text',
)
def clean_text(self):
data = self.cleaned_data['text']
print(data)
#check if word count is <30
if len(data.split()) < 30:
raise forms.ValidationError(('Please write at least 30 words,\
%(count)s words is not long enough'), params={'count':count})
return data
我的观点
@login_required
def create_new_post(request):
if request.method == 'POST':
form = CreatePostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.created = timezone.now()
post.save()
return redirect('post-detail', pk=post.pk)
else:
form = CreatePostForm()
return render(request, 'journal/create_post.html', {'form':form})
所以我尝试打印以查看该函数是否被调用,但控制台中什么都没有打印。
有人可以解释我在做什么错吗?为什么会这样?
答案 0 :(得分:3)
您的缩进不正确。目前,clean_text
是Meta
类的方法。
class CreatePostForm(forms.ModelForm):
class Meta:
model = Post
fields = (
'title', 'text',
)
def clean_text(self):
...
它应该与Meta
类在相同级别缩进:
class CreatePostForm(forms.ModelForm):
class Meta:
model = Post
fields = (
'title', 'text',
)
def clean_text(self):
...