«Это поле не может быть пустым», даже если поле не пустое? - PullRequest
0 голосов
/ 12 февраля 2020

models.py:

class Test(PolymorphicModel):
    title = models.CharField(max_length=300)

forms.py:

class RestaurantForm(forms.ModelForm):
    class Meta:
        model = Test
        fields = [
            'title',
        ]
def clean_title(self, *args, **kwargs):
    title = self.cleaned_data.get("title")
    if len(title) < 3:
        raise forms.ValidationError("Please, enter at least 3 symbols!")

Хорошо, когда вы пытаетесь отправить форму с в тексте, например, «aa», отображается ошибка «Пожалуйста, введите не менее 3 символов!» работает нормально, но при добавлении более 3 символов возвращается Это поле не может быть пустым который приходит из модели, потому что нет blank=True, но поле не пустое, я в замешательстве.

1 Ответ

0 голосов
/ 12 февраля 2020
Методы

django clean_xxx ожидают, что вы вернете очищенное значение, которое хотите использовать, в вашем случае это None. Кроме того, лучше использовать self.add_error и не вызывать ошибку ValidationError.

Ваш код должен выглядеть следующим образом:

def clean_title(self):
    title = self.cleaned_data["title"]
    if len(title) < 3:
        self.add_error("title", "Please, enter at least 3 symbols!")
    return title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...