Ho un modello in questo mododjango 1.7 join esterno sinistro
class Job(models.Model):
description = models.CharField(max_length=255)
user = models.ForeignKey(User)
date = models.DateField()
slot = models.CharField(max_length=10, choices=SLOT_CHOICES)
location = models.ForeignKey(Location)
objects = JobManager()
searches = geomodels.GeoManager()
class Meta:
verbose_name_plural = "Job"
unique_together = ('date', 'slot', 'user')
def __str__(self):
return "{0}-{1}".format(self.user.first_name, self.date)
class Applied(models.Model):
user = models.ForeignKey(User)
job = models.ForeignKey(Job, null=True, blank=True)
action_taken = models.BooleanField(default=False)
is_declined = models.BooleanField(default=False)
class Meta:
verbose_name_plural = "Job Applications"
unique_together = ('user', 'job',)
voglio cercare tutti i posti di lavoro tra un intervallo di date e mostrare se un utente può applicare, già applicato o è stata rifiutata. Le informazioni dell'applicazione sono nel modello applicato.
jobs = Job.searches.filter(**kwargs)\
.filter(date__range=(date_from, date_to),
visibility=VisibilityStatus.PUBLIC,
status=JobStatus.AVAILABLE)\
.prefetch_related('applied_set')\
.select_related('user__surgeryprofile__location')\
.order_by('date')
Ma non riesco a farlo funzionare, non sta facendo un join sinistro sulla tabella applicata nel database. qualsiasi suggerimento su come farlo funzionare.
Grazie
Perdonami per la domanda, ma non sarebbe sufficiente un join interno? – e4c5
Inner join porterà solo le righe che esistono in entrambe le tabelle, voglio un left out join come voglio tutte le righe dalla tabella di job tra l'intervallo di date e le righe dalla tabella applicata se l'utente ha già fatto domanda per quel lavoro e se è stato rifiutato. –
Il tuo codice dovrebbe darti il risultato giusto (lavori filtrati con un_set_peso che potrebbe essere vuoto) anche se non ci sono join. "prefetch_related nella maggior parte dei casi verrà implementato utilizzando una query SQL che utilizza l'operatore" IN "." https://docs.djangoproject.com/en/1.7/ref/models/querysets/#prefetch-related – JimmyYe