Как установить поле сериализатора, не показывая его конечному пользователю в DRF?

У меня есть url типа "doc/<int:doc_id>/price/" для get и post и "doc/<int:doc_id>/price/<int:id>" для delete и patch или retrieve.

Моя проблема заключается в том, что при создании новой цены я хочу установить price.doc_id=self.kwargs\['doc_id'\], но в то же время я хочу, чтобы это поле сериализатора было скрыто в документации swagger (я использую drf-spectacular). Конечный пользователь не должен знать об этом поле.

Я знаю, что могу переписать метод create в сериализаторе и явно задать цену или использовать serializers.save(doc=doc), но я задаю этот вопрос, чтобы получить лучшее решение. Я также пробовал hiddenfield, но, по-видимому, он принимает только значение по умолчанию, и я не знаю, как передать ему doc_id.

class DocPriceOutHistorySerializer(ModelSerializerWithValidator):

    currency_name = serializers.CharField(read_only=True)
    type_price_name = serializers.CharField(read_only=True)

    class Meta:
        model = models.DictPriceList
        fields = (
            'id',
            'dat',
            'price',
            'currency',
            'currency_name',
            'type_price',
            'type_price_name',
            'obj',
            'doc',
        )

и в файле views.py

data = request.data
data['doc'] = self.kwargs['doc_id']
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)

Это будет работать, но я не хочу вручную писать схему запроса для swagger.

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