Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

308
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!