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')