Как сделать представление CreateOnly в Django-Rest-Framework? - PullRequest
0 голосов
/ 17 января 2019

Как я могу создать представление «Только создание»? Я просто хочу позволить пользователю создать объект и ничего больше.

Мой текущий код выглядит так:

views.py

class BookingRequestCreateViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):

    serializer_class = BookingRequestSerializer

    def get_queryset(self):
        return None

Это отлично работает. Но в моей модели есть ForeignKey, и в веб-представлении каждый пользователь может видеть все идентификаторы. (Выберите вход для ForeignKey в веб-интерфейсе REST) ​​

enter image description here

Как я могу остановить это поведение?

Спасибо

1 Ответ

0 голосов
/ 19 января 2019

По умолчанию связанное поле (PrimaryKeyRelatedField, SlugRelatedField и т. Д.) Отображается со значением по умолчанию HTML select . Проверьте этот фрагмент .

Среда Django REST позволяет изменять стиль рендеринга поля сериализатора с помощью ключевого аргумента style (отметьте это doc ).

Если вы не хотите, чтобы API отображал идентификаторы существующих объектов в пределах выбора, измените аргумент style вашего поля сериализатора, установив стиль рендеринга для простого HTML-ввода . Примерно так:

class BookingRequestSerializer(serializers.ModelSerializer):
    ...
    related_field = PrimaryKeyRelatedField(
        queryset=RelatedModel.objects.all(),
        style={'base_template': 'input.html'},
    ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...