Как отобразить поля вложенных объектов в документации Django CoreAPI
Общий вид для сотрудника:
class EmployeeCreateView(generics.CreateAPIView):
serializer_class = EmployeeSerializer
У меня есть вложенный сериализатор Employee.
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 в Документах:
Поэтому я хочу отображать поля для пользователя тоже. Можно ли настроить это?
1 ответ
Я считаю, что правильный способ достижения того, чего вы хотите, - это создать конечную точку создания пользователя отдельно, а затем создать поле для пользователя в Employee Serializer, используя поле "Первичный ключ, связанный".
Эта специфическая ситуация возникла, когда я проходил стажировку и, поверьте мне, вы не хотите использовать непосредственно вложенный User Serializer, так как это создаст проблему при попытке создать API для обновления Employee, поскольку управление созданием пользователя смещается до конечной точки сотрудника.
Таким образом, вы сначала создаете пользователя, а затем при регистрации Сотрудник может назначить подходящего пользователя в соответствии с Первичным ключом.