Petit pense bête sur comment retrouver les objets liés par des clés étrangères avec Django

Dans mon cas d’utilisation j’ai deux models d’objets :

Le model pour une annonce d’appartement qui est liée à un évenement :

class Accommodation(models.Model):

    #Foreign keys
    user = models.ForeignKey(User, unique=False, verbose_name=_('user'))
    event = models.ForeignKey(Event, unique=False, verbose_name=_('event'),blank=True, null=True)

    #Attributes
    title = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    description = models.TextField()
    longitude = models.CharField(max_length=200, null=True)
    latitude = models.CharField(max_length=200, null=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo_count = models.CharField(max_length=2, null=True)
    created_on = models.DateTimeField(auto_now_add=True)
    accommodates = models.IntegerField()
    bedrooms = models.IntegerField(null=True)
    views = models.IntegerField(null=True)
    last_modify_on = models.DateTimeField(auto_now_add=True)

Et l’évènement en lui même :

class Event(models.Model):

    def __unicode__(self):
        return self.title

    #Foreign keys
    created_by = models.ForeignKey(User, unique=False, verbose_name=_('created_by'))

    #Attributes
    title = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    description = models.TextField()
    longitude = models.CharField(max_length=200, null=True)
    latitude = models.CharField(max_length=200, null=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    created_on = models.DateTimeField(auto_now_add=True)

    def upload_path(self, filename):
        return 'upload/events/%s/%s' % (self.id, filename)

    photo = models.ImageField(upload_to=upload_path)

    start_on = models.DateTimeField()
    end_on = models.DateTimeField()
    views = models.IntegerField(null=True)
    displayed = models.BooleanField()
    last_modify_on = models.DateTimeField(auto_now_add=True)

Ma grande question du jour était donc : Comment faire pour retrouver à partir d’un évènement toutes les annonces associées ? . Rien de plus simple :

event = Event.objects.get(id=1)
annonces = event.accommodation_set
#On affiche le nombre d'appartements :
event.accommodation_set.count()

Et voici l’astuce du jour