Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

309
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda