Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

310
Vistas
Django Query, encuentre el valor más común para el campo en una relación de muchos a muchos

Dados estos modelos (donde un Restaurante tiene muchas Pizzas y las Pizzas tienen muchos Toppings )

 class Restraunt(Model) class Topping(Model): name = Charfield() class Pizza(Model): in_resteraunt = ForeignKey(Resteraunt) toppings = ManyToMany(topping, related_name='on_pizza')

Estoy tratando de averiguar cómo: dado un restaurante, en todas sus pizzas, ¿cuál es el aderezo más común?

Una cosa que se me ocurrió es algo como esto (donde R = el restaurante)

 Topping.objects.filter(on_pizza__restaurant=R).annotate(the_count=Count('on_pizza')).order_by('-the_count')[0]

El problema aquí es que no estoy seguro de si on_pizza es exclusivo del objeto Restaurant, básicamente, un objeto topping puede estar en una pizza en varios restaurantes. Necesito que sea único. Aquí estoy comenzando con el Topping, ¿hay alguna manera de comenzar con un conjunto de búsqueda de pizzas?

He buscado expresiones de subconsulta pero realmente no veo cómo implementar

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El problema aquí es que no estoy seguro de si on_pizza es exclusivo del objeto Restaurant , básicamente, un objeto topping puede estar en una pizza en varios restaurantes. Necesito que sea único.

La consulta es correcta . Usted filtra en el restaurante, lo que significa que en el Count , solo contará las Pizza que son para el restaurante R Entonces, esto calculará el aderezo más común para las pizzas hechas en el restaurante R

La consulta se verá así:

 SELECT topping.*, COUNT(pizza.pk) FROM topping LEFT OUTER JOIN pizza_toppings ON pizza_toppings.topping_id = topping.id LEFT OUTER JOIN pizza ON pizza.id = pizza_toppings.pizza_id WHERE pizza.restaurant_id = id_of_r GROUP BY topping.pk ORDER BY COUNT(pizza.pk) LIMIT 1
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda