• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

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

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 Report

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

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error