How i can handle django nested serializer with django sub nested model

228 views Asked by At

I want to find a more conventional way to handle the Django nested serializer with Django sub-nested models.

I have created these two models with override function get_attribute. It's works fine for me but I'm, looking for a more conventional way to handle this. Two serializers

class ProductSerializer(serializers.ModelSerializer):
   def get_attribute(self, instance):
      if isinstance(instance, Invoice):
         instance = instance.invoiceitems.all().first().price
      return super().get_attribute(instance)

   class Meta:
       model = Product

class InvoiceSerializer(serializers.ModelSerializer):
product = ProductSerializer()

   class Meta:
       model = Invoice

from the Invoice model, I can access Product by reverse ORM method as I use in get_attribute override function. e.g

invoice_object.invoiceitems.all().first().price

For now, it's working fine for me. But looking for a more conventional way. Thank you in advance.

1

There are 1 answers

0
Marin On
class InvoiceSerializer(serializers.ModelSerializer):
    product = ProductSerializer()
    price = serializer.ReadOnlyField(source='product.price')
    class Meta:
        model = Invoice