Как показать поля вложенных объектов в документации Django CoreAPI

Общий вид для сотрудника:

class EmployeeCreateView(generics.CreateAPIView):
    serializer_class = EmployeeSerializer

У меня есть вложенный сериализатор сотрудников.

class EmployeeSerializer(serializers.ModelSerializer):

    user = UserSerializer(required=True)

    class Meta:
        model = Employee
        fields = ('user','employee_position','join_date')

    def create(self, validated_data):
        """
        Overriding the default create method of the Model serializer.
        :param validated_data: data containing all the details of student
        :return: returns a successfully created student record
        """

        user_data = validated_data.pop('user')
        user = UserSerializer.create(UserSerializer(), validated_data=user_data)
        employee, created = Employee.objects.update_or_create(user=user,
                            join_date=validated_data.pop('join_date'),
                            employee_position=validated_data.pop('employee_position'))
        return employee

Теперь, когда я пытаюсь отобразить этот API в Документах:

Как показать поля вложенных объектов в документации Django CoreAPI

Поэтому я хочу отображать поля и для пользователя. Можно ли это настроить?

Вы хотите увидеть список пользователей или добавить нового пользователя?

Mohammad Ali 17.10.2018 11:29

Я хочу добавить пользователя @MohammadAli. Таким образом, он также должен отображать все поля для пользователя

CodeGeek 17.10.2018 11:31

напишите модель UserSerializer и Employee, пожалуйста

Mohammad Ali 17.10.2018 11:41

Вы видели результат в браузере или в приложении Post?

Mohammad Ali 17.10.2018 11:43

Я могу выложить это. У меня в этом нет проблем. Я просто хотел показать в документации API, какие поля включены в объект User.

CodeGeek 17.10.2018 11:48

Я также сослался на это: github.com/encode/django-rest-framework/issues/5072

CodeGeek 17.10.2018 11:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
158
1

Ответы 1

Я считаю, что правильный способ добиться того, чего вы хотите, - это создать конечную точку создания пользователя отдельно, а затем иметь поле для пользователя в сериализаторе сотрудников с использованием поля, связанного с первичным ключом. Эта конкретная ситуация возникла, когда я проходил стажировку, и поверьте мне, вы не хотите использовать напрямую вложенный сериализатор пользователей, так как это вызовет проблемы, когда вы попытаетесь создать API для обновления сотрудника, потому что управление созданием пользователя сдвигается. к конечной точке Сотрудника. Таким образом, вы сначала создаете пользователя, а затем при регистрации Сотрудник может назначить правильного пользователя в соответствии с первичным ключом.

Но то, что вы сказали, похоже на отношения oneToOne. Что я уже сделал.

CodeGeek 18.10.2018 12:43

Какое поле, связанное с первичным ключом, предназначено для обозначения цели отношения. Как это будет работать, при создании сотрудника вы указываете первичный ключ пользователя, которому вы хотите назначить сотрудника. Ничего страшного, если отношения между сотрудником и пользователем один к одному. Попробуйте то, что я сказал, и это наверняка сработает. Я уже разбирался с подобными случаями, используя то, что я сказал.

dipen bhatt 18.10.2018 16:29

Можем ли мы серьезно поговорить об этом? Я новичок в django. Итак, вы можете предложить мне лучший дизайн базы данных только для эффективного управления пользователями, клиентами и сотрудниками.

CodeGeek 19.10.2018 15:24

Хорошо. Смотрите, главное, что в конечном итоге все клиенты и сотрудники являются только пользователями. Итак, схема базы данных довольно проста. Просто сделайте 3 разные модели. Пользователь, заказчик и сотрудник. А затем выработайте те отношения, которые вы для них задумали. И обязательно отметьте галочкой и проголосуйте за ответ, если вы считаете, что он отвечает на ваши вопросы. Буду рад помочь дальше.

dipen bhatt 19.10.2018 16:07

Другие вопросы по теме