from rest_framework import serializers from finance.models import Bill, Invoice class BillSerializer(serializers.ModelSerializer): opener = serializers.SerializerMethodField() user = serializers.SerializerMethodField() invoices = serializers.SerializerMethodField() class Meta: model = Bill fields = '__all__' @staticmethod def get_user(self): return self.user.email @staticmethod def get_invoices(self): return [InvoiceSerializer(i).data for i in self.invoice_set.all()] @staticmethod def get_opener(self): return self.opener.email class InvoiceSerializer(serializers.ModelSerializer): status = serializers.SerializerMethodField() method = serializers.SerializerMethodField() class Meta: model = Invoice exclude = ('bill', ) @staticmethod def get_status(self): return self.get_status_display() @staticmethod def get_method(self): return self.get_method_display()