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

273
Visualizações
En Django, ¿cómo obtengo todas las instancias de un modelo que tiene otras instancias de un modelo relacionado adjunto con un campo ForeignKey?

Estoy tratando de escribir una consulta que recupere todas las categorías que tienen al menos una post adjunta. En otras palabras, quiero 'excluir' cualquier categoría que no tenga ninguna publicación.

Estos son mis modelos para Category y Post :

 class Category(models.Model): title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique=True) class Post(models.Model): title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique=True) body = models.TextField() category = models.ForeignKey(Category, blank=True, default="")

Este es el código que estoy usando en mi consulta, actualmente obtiene todas las categorías, incluso si no hay ninguna publicación 'adjunta':

 categories = Category.objects.all()

Lo que quiero es algo como esto:

 categories = Category.objects.filter( # Only ones that have at least one Post that has it's 'category' field set to it. )

He buscado en los documentos y en todas partes, pero no puedo encontrar una solución.

Por favor, hágame saber cómo se puede hacer esto.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede utilizar la siguiente consulta:

 categories = Category.objects.filter(post__isnull=False).distinct()

Esto obtendrá todas las categorías donde post no es nula. Dado que una categoría podría tener varias publicaciones, obtendrá instancias duplicadas con la misma identificación. Tome una distinct para eliminar las categorías duplicadas.

Tenga en cuenta que distinct(*fields) es específico de postgresql. Si está utilizando una base de datos diferente, simplemente use distinct() .

over 4 years ago · Santiago Trujillo Relatório

0

Obtenga todos los ID de categoría únicos consultando Post para una categoría distinta y luego filtre Categoría por ID.

 id_list = Post.objects.values_list('category_id').distinct() catgories = Category.objects.filter(id__in=id_list)
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