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

Это может решить вашу проблему

Вернуться на верх