Поле со значением по умолчанию отображается в схеме как необязательное
Опишите ошибку
Мой код имеет следующую модель с булевым полем, 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, в котором показана пара обходных путей. Там также есть ответ, объясняющий причины.
На данный момент вы можете воспользоваться одним из этих обходных путей:
- создайте разные сериализаторы для запросов и ответов и сделайте все поля для сериализатора ответов доступными для чтения.
- Создайте пользовательский хук постпроцессинга, который устанавливает все поля обязательными для сериализаторов ответа (пример см. в выпуске github)