Когда и где `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.