Общий вид для сотрудника:
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 в Документах:
Поэтому я хочу отображать поля и для пользователя. Можно ли это настроить?
Я хочу добавить пользователя @MohammadAli. Таким образом, он также должен отображать все поля для пользователя
напишите модель UserSerializer и Employee, пожалуйста
Вы видели результат в браузере или в приложении Post?
Я могу выложить это. У меня в этом нет проблем. Я просто хотел показать в документации API, какие поля включены в объект User.
Я также сослался на это: github.com/encode/django-rest-framework/issues/5072





Я считаю, что правильный способ добиться того, чего вы хотите, - это создать конечную точку создания пользователя отдельно, а затем иметь поле для пользователя в сериализаторе сотрудников с использованием поля, связанного с первичным ключом. Эта конкретная ситуация возникла, когда я проходил стажировку, и поверьте мне, вы не хотите использовать напрямую вложенный сериализатор пользователей, так как это вызовет проблемы, когда вы попытаетесь создать API для обновления сотрудника, потому что управление созданием пользователя сдвигается. к конечной точке Сотрудника. Таким образом, вы сначала создаете пользователя, а затем при регистрации Сотрудник может назначить правильного пользователя в соответствии с первичным ключом.
Но то, что вы сказали, похоже на отношения oneToOne. Что я уже сделал.
Какое поле, связанное с первичным ключом, предназначено для обозначения цели отношения. Как это будет работать, при создании сотрудника вы указываете первичный ключ пользователя, которому вы хотите назначить сотрудника. Ничего страшного, если отношения между сотрудником и пользователем один к одному. Попробуйте то, что я сказал, и это наверняка сработает. Я уже разбирался с подобными случаями, используя то, что я сказал.
Можем ли мы серьезно поговорить об этом? Я новичок в django. Итак, вы можете предложить мне лучший дизайн базы данных только для эффективного управления пользователями, клиентами и сотрудниками.
Хорошо. Смотрите, главное, что в конечном итоге все клиенты и сотрудники являются только пользователями. Итак, схема базы данных довольно проста. Просто сделайте 3 разные модели. Пользователь, заказчик и сотрудник. А затем выработайте те отношения, которые вы для них задумали. И обязательно отметьте галочкой и проголосуйте за ответ, если вы считаете, что он отвечает на ваши вопросы. Буду рад помочь дальше.
Вы хотите увидеть список пользователей или добавить нового пользователя?