Когда и где `Model.blank` проверяется DRF?

У меня есть модель

class SomeModel(models.Model):
    emails = ArrayField(models.EmailField(), default=list)

Допустим, у меня есть следующий сериализатор модели:

class SomeModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = SomeModel
        fields = ['emails']

Поле email не является blank-able, т.е. требуется установить для него значение при отправке формы модели или при сохранении ее Serializer.

Все работает так, как ожидалось.

Насколько я понимаю, DRF полагается на внутренний механизм Django для проверки того, отсутствует ли emails в данных Serializer или нет. Но дело в том, что я не могу найти, где (и когда) это происходит.

Я обнаружил, что DRF больше не вызывает метод модели clean() (link)... Есть ли у вас идеи о том, когда и где DRF проверяет значение поля blank?

Спасибо!

Насколько я знаю, это просто не так. Они используются только в формах и интерфейсе администратора django.

Я всегда указываю эти вещи на уровне сериализатора, устанавливая соответствующие аргументы для моих полей (doc), в данном случае это будет allow_blank.

Я создаю REST API с помощью django, и единственный случай, когда свойство blank на поле модели ловит меня, это когда я возился на странице администратора.

Однако, похоже, есть пакет, который может вас заинтересовать: django-seriously.

Я не использовал его, но он кажется вызывает full_clean() на каждом save(). Конечно, это имеет тот недостаток, что вы, вероятно, потеряете красивые сообщения об ошибках DRF.

Вернуться на верх