Как сериализовать поле внешнего ключа в django rest framework
Я работаю над проектом с drf, где я получаю данные сериализатора следующим образом, что абсолютно нормально:
{
"message": "Updated Successfully",
"status": 200,
"errors": {},
"data": {
"id": 8,
"user": 2,
"item": 1,
"quantity": 4,
"created_at": "2021-08-11T13:49:27.391939Z",
"updated_at": "2021-08-11T13:51:07.229794Z"
}
}
но я хочу получить следующее:
{
"message": "Updated Successfully",
"status": 200,
"errors": {},
"data": {
"id": 8,
"user": "user name",
"item": "product name",
"price: "3.44",
"quantity": 4,
"created_at": "2021-08-11T13:49:27.391939Z",
"updated_at": "2021-08-11T13:51:07.229794Z"
}
}
Я пробовал использовать drf RelatedField
и PrimaryKryRelatedField
, но во всех этих случаях мне нужно сделать соответствующие поля как read_only=True
, которые я хочу пропустить.
Я также пробовал с depth = 1
, который дает полную информацию
Пожалуйста, если кто-нибудь может помочь, буду очень признателен. Спасибо
Вы можете воспользоваться to_representation()
Попробуйте
class CartSerializer(serializers.ModelSerializer):
class Meta:
model = Cart
def to_representation(self, instance):
representation = dict()
representation["id"] = instance.id
representation["user"] = instance.user.username
representation["item"] = instance.item.name
representation["quantity"] = instance.quantity
representation["created_at"] = instance.created_at
representation["updated_at"] = instance.updated_at
return representation
NB: Возможно, вам придется изменить instance.field_name(s)
соответствующим образом