Переопределенная чистая функция не вызывается - PullRequest
0 голосов
/ 25 февраля 2019

Документация говорит (что я сделал)

Метод 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})

Поэтому я попытался распечатать, чтобы узнать, вызывается ли эта функция, но в консоли ничего не печаталось.

Может кто-нибудь объяснить, что я делаю не так?Почему это происходит?

1 Ответ

0 голосов
/ 25 февраля 2019

Ваш отступ неверен.В настоящее время 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):
        ...
...