Django select_related() с ограничением latest() на связанный объект

Рассмотрим возможность иметь Table стол и Reservation стол в моем ресторане Django APP.

class Reservation(models.Model):

    table = models.ForeignKey(
        Table,
        on_delete=models.CASCADE,
        blank=False,null=False,
        related_name='reservations'
    )

    def __str__(self):
        return str(self.pk)

class Table(models.Model):

    def __str__(self):
        return str(self.pk)

Если я хочу показать список столиков ресторана с соответствующим бронированием, то мне нужно выбрать связанное бронирование для каждого столика. Но мне нужно выбрать связанное только последнее бронирование каждого столика (которое активно в данный момент).

Как этого достичь?

Прежде всего, вы должны использовать prefetch_related(), а не select_related() из-за обратного отношения oneToMany,

Во-вторых, вы можете просто использовать orm tableObject.reservations.last() или tableObject.reservations.latest('created_at')

Вернуться на верх