#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Предположим, у пользователя есть адрес в качестве внешнего ключа
Типичное PrimaryKeyRelatedField будет представлять внешний ключ по идентификатору:
{
id: 3,
first_name: eugene,
last_name: kim,
address: 9 # here 9 is address's id
}
Я хотел бы изменить представление поля внешнего ключа по умолчанию, измененное, как в следующем примере. (Надеюсь, без меня, определяющего сериализатор для каждого поля внешнего ключа)
{
id: 3,
first_name: eugene,
last_name: kim,
address: {
id: 9 # difference here,
}
}
Ответ №1:
Попробуйте это
class MyPrimaryKeyRelatedField(PrimaryKeyRelatedField)
def to_representation(self, value):
if self.pk_field is not None:
return self.pk_field.to_representation(value.pk)
return {"id": value.pk}
Обновить
class MyModelSerializer(serializers.ModelSerializer)
serializer_related_field = MyPrimaryKeyRelatedField
Затем замените PrimaryKeyRelatedField
на MyPrimaryKeyRelatedField
и
serializers.ModelSerializer
на MyModelSerializer
Комментарии:
1. Спасибо. PrimaryKeyRelatedField автоматически используется для поля внешнего ключа. Можно ли установить MyPrimaryKeyRelatedField в качестве поля сериализатора по умолчанию для внешних ключей?