Reputation: 25
How can i add an int value inside of a field in multiple object to be displayed in another object. Lets say that i need to add all of the item that the customer have ordered previously and store them inside of all_previous_orders.
For example if customer no 1 making an order for 10 fruits and then later making another order for 1 car then the field inside of customer object named "all_previous_orders" will add all of the number of item inside of order object (10 fruits + 1 car = 11 item).
[
{
"customer_name": "John Doe",
"order": [
{
"order_name": "fruit",
"how_many_order": 10,
},
{
"order_name": "car",
"how_many_order": 1,
},
],
"all_previous_orders": 11
},
]
class Customer(models.Model):
customer_name = models.CharField(max_length=100)
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
order_name = models.CharField(max_length=100)
how_many_order = models.IntegerField(default=0)
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = '__all__'
class CustomerSerializer(serializers.ModelSerializer):
orders = OrderSerializer(many=True, read_only=True, required=False)
class Meta:
model = Customer
fields = '__all__'
Upvotes: 0
Views: 84
Reputation: 938
You'd have to change your CustomerSerializer
a bit to add a count
for the past orders:
class CustomerSerializer(serializers.ModelSerializer):
all_previous_orders= serializers.SerializerMethodField()
orders = OrderSerializer(many=True, read_only=True, required=False)
class Meta:
model = Customer
fields = ('customer_name', 'orders', 'all_previous_orders')
def get_all_previous_orders(self, customer):
count = Order.objects.filter(customer=customer).count()
return count
Upvotes: 0