es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar de manera eficiente objetos a ManyToManyFields de múltiples objetos en Django python?

Cómo agregar eficientemente objetos a ManyToManyFields de múltiples objetos?

def handle(self, *args, **kwargs):
    shops = MyShop.objects.all()
    for shop in shops:
        month_invoice = shop.shop_order.annotate(year=TruncYear('created'), month=TruncMonth('created')).values(
            'year', 'month', 'shop_id'
        ).annotate(total=Sum(ExpressionWrapper(
            (F('item_comission') / 100.00) * (F('price') * F('quantity')), output_field=DecimalField())),
        ).order_by('month')
        for kv in month_invoice:
            a = ShopInvoice.objects.create(shop_id=kv['shop_id'], year=kv['year'], month=kv['month'], total=kv['total'])
            test = shop.shop_order.filter(created__month=kv['month'].month, created__year=kv['year'].year)
            for t in test:
                a.items.add(t.id)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El fragmento de código anterior demuestra una forma eficiente de agregar objetos a campos ManyToManyFields de múltiples objetos en Django utilizando bucles y consultas. Específicamente, la función recorre todos los comercios y extrae los datos de facturación mensual de sus pedidos de tienda. Luego crea un objeto ShopInvoice para cada mes y comercio con el monto total de la factura y agrega los elementos del pedido al ManyToManyField. Este enfoque evita consultas redundantes a la base de datos y optimiza la creación de objetos y asociaciones.

Comments are closed.