Поле со значением по умолчанию отображается в схеме как необязательное

Опишите ошибку Мой код имеет следующую модель с булевым полем, published, со значением по умолчанию false

class PublishableModel(models.Model):
    """Fields used to determine if and when something is published."""
    published = models.BooleanField(default=False)
    publish_date = models.DateTimeField(blank=True, null=True)

Однако схема, которую создает drf-spectacular, показывает опубликованные данные как необязательные.

Например:

/**
 * 
 * @type {boolean}
 * @memberof Article
 */
published?: boolean;

Ожидаемое поведение: Поскольку существует значение по умолчанию - все типы ответов должны появляться в обязательной секции модели для методов, возвращающих статью, но необязательной для методов, создающих статью.

Есть ли способ различать в схеме требуемые значения запроса и ответа?

По этому поводу есть открытый выпуск^1, в котором показана пара обходных путей. Там также есть ответ, объясняющий причины.

На данный момент вы можете воспользоваться одним из этих обходных путей:

  1. создайте разные сериализаторы для запросов и ответов и сделайте все поля для сериализатора ответов доступными для чтения.
  2. Создайте пользовательский хук постпроцессинга, который устанавливает все поля обязательными для сериализаторов ответа (пример см. в выпуске github)
Вернуться на верх