Django могу ли я передать только "id" в POST запросе, несмотря на отображение вложенных полей?
В моих пост-запросах к модели OrderProduct я хочу передавать только order.id и product.id, и это работает... пока я не добавлю сериализатор для получения product.name. Возможно, это потому, что я не понял документацию о вложенных запросах, но я не могу продвинуться дальше в своем проекте :(
)[
{
"id": 2,
"order": 1,
"product": 1,
}
]
^ вот как это выглядит без вложенного сериализатора, и это те данные, которые я хочу иметь на входе
[
{
"id": 2,
"order": 1,
"product": {
"id": 1,
"name": "gloomhaven",
},
},
^ вот как это выглядит после добавления дополнительного сериализатора. Я очень хочу, чтобы эти вложенные поля были только для чтения, при этом я все еще могу отправлять простые запросы на почту
вот мои сериализаторы
class OrderProductSerializer(serializers.ModelSerializer):
product = Product()
class Meta:
model = OrderProduct
fields = [
"id",
"order",
"product"]
class Product(serializers.ModelSerializer):
class Meta:
model = Product
fields = (
"id",
"name")
Есть ли для меня какой-нибудь способ сделать это? Спасибо за попытку помочь!
Мне кажется, что вы упускаете много=Правда
class OrderProductSerializer(serializers.ModelSerializer):
product = Product(many=True)
class Meta:
model = OrderProduct
fields = [
"id",
"order",
"product"]
Просто перезапишите метод to_representation сериализатора
def to_representation(self, instance):
response = super().to_representation(instance)
response['other_field'] = instance.id# also response['other_field'] = otherSerializer(instance.model)
return response
Это может решить вашу проблему