Django Как добавить число из другого объекта

Как добавить значение int внутри поля в нескольких объектах, чтобы оно отображалось в другом объекте. Допустим, мне нужно добавить все товары, которые клиент заказывал ранее, и сохранить их в поле all_previous_orders.

Result.json

[
    {
        "customer_name": "John Doe",
        "order": [
            {
                "order_name": "fruit",
                "how_many_order": 10,
            },
            {
                "order_name": "car",
                "how_many_order": 1,
            },
        ],
        "all_previous_orders": 11
    },
]

Models.py

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)

Serializers.py

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__'

Вам придется немного изменить CustomerSerializer, чтобы добавить count для прошлых заказов:

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 
Вернуться на верх