• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

160
Vistas
¿Cómo consultar todos los objetos del modelo excepto los que ya están en otro modelo?

Estoy trabajando en una aplicación Django. Tengo 2 modelos relevantes para la pregunta:

 class Quiz(models.Model): """ Represents a Quiz for a `Module`. It will have a `name` """ name = models.CharField(max_length=200) user = models.ManyToManyField('cme.Bussines', related_name='quizes', through='UserQuiz', through_fields=('quiz', 'user')) def __str__(self) -> str: return f'{self.name}' class Trio(models.Model): """ Represents the content for a Module. Each `Trio` will have, as it's name says, 3 content fields, plus the `Module` it belongs to. It will have a `file`, a `video` (which will be a URL to a YT video), and a `quiz` (which will be key to `Quiz`) """ file = models.FileField(upload_to='legacy/classes/', max_length=254) quiz = models.ForeignKey(Quiz, on_delete=models.SET_NULL, related_name='trios', null=True, blank=True) video = models.URLField() module = models.ForeignKey(Module, on_delete=models.CASCADE, related_name='trios') user = models.ManyToManyField('cme.Bussines', related_name='trios', through='UserTrio', through_fields=('trio', 'user')) def __str__(self) -> str: return f'Trio {self.id} de {self.module}'

Quiero consultar todos los Quiz que no están en el campo de quiz de Trio . ¿Hay alguna forma de hacer esto?

about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Sí, puedes consultar con:

 Quiz.objects.filter( trios=None )

Esto hará una UNIÓN Quiz IZQUIERDA y solo conservará las Pruebas para las que no hay un objeto Trio relacionado.

about 3 years ago · Santiago Trujillo Denunciar

0

Puede consultar todos los objetos Quiz cuya id se ve en cualquier objeto Trio :

 Quiz.objects.exclude(id__in=Trio.objects.values("quiz_id"))

También puede refinar más la consulta. Por ejemplo, supongamos que desea que todos los objetos Quiz no se refieran a un subconjunto específico de objetos Trio , puede hacerlo agregando un filtro en su expresión de exclusión, algo como:

 Quiz.objects.exclude(id__in=Trio.objects.filter(...).values("quiz_id"))
about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda