0

モデルフォームを使用しています。私は同じことをしようとしていますが、答えが得られません。私が書いたフォーム検証方法が正しいかどうかはわかりません。

forms.py

class BookForm(ModelForm):
    class Meta:
        model = Book
        fields=['book_id', 'book_name', 'author_name','publisher_name']

    def clean_book_name(self):
        book_name = self.cleaned_data['book_name']
        if book_name is None:
            raise ValidationError('field mandatory')
        return book_name

    def clean_author_name(self):
        author_name=self.cleaned_data['author_name']
        num_words = len(author_name.split())
        if num_words < 4:
            raise forms.ValidationError("Not enough words!")
        return author_name

ModelFormを使用しています。この検証のためにviews.pyには何も書いていません。

レンプレート

<div align="center">

    <form action="/addbook/" method="POST"> {% csrf_token %}

        <div class="field">
            {{ form.book_name.errors }}
            <label for="id_book_name">Book Name:</label>
            {{ form.book_name }}
        </div>
        <div class="field">
            {{ form.author_name.errors }}
            <label for="id_email">Author name:</label>
            {{ form.author_name }}
        </div>
        <div class="field">
            {{ form.publisher_name.errors }}
            <label for="id_message">Publisher Name:</label>
            {{ form.publisher_name }}
        </div>

誰かがこれを解決するのを手伝ってくれますか?私にアイデアを提供するか、私のコードにエラーがある場合は通知してください。

ありがとう

4

1 に答える 1

1
def clean_book_name(self):
    book_name = self.cleaned_data['book_name']
    if not book_name:
        raise forms.ValidationError('field mandatory')
    return book_name
于 2013-03-16T13:25:32.137 に答える