Сортировка и фильтрация объектов модели django по значениям внешних ключей
Итак, мне дали тест для собеседования, и я пытаюсь понять, как лучше всего реализовать это:
Допустим, у нас есть проект django. С моделями:
Аренда
- имя
Reservation
- rental_id
- checkin(дата)
- checkout(дата)
Добавьте представление с таблицей резервирований с "ID предыдущего резервирования".
Предыдущее бронирование - это бронирование, которое находится перед текущим в той же
аренду.

Итак, я попытался реализовать что-то, что действительно работает, но я чувствую, что проигнорировал много хороших практик, просто чтобы сделать работу, я буду признателен за некоторые идеи/советы о том, как я могу улучшить свой код, спасибо, ребята. Ps: мне действительно нужна эта работа :(
)Вот пример моего кода:
##### models
from django.db import models
# Create your models here.
class Rental(models.Model):
name = models.CharField(max_length=100)
def __str__(self) -> str:
return self.name
class Reservations(models.Model):
rental_id = models.ForeignKey(Rental, related_name="rental_id", on_delete=models.CASCADE)
checkin = models.DateField()
checkout = models.DateField()
def __str__(self) -> str:
return f"{self.rental_id.name}, {self.id}"
#### The views implementation
from django.shortcuts import render
from .models import Rental, Reservations
def All_Reservation(request):
reservations = Reservations.objects.all()
rental_names = Rental.objects.values_list('name')
ValueSet = []
for i in sort_by_rental_name(rental_names):
ValueSet += i
mapped = zip(ValueSet,reservations)
print(dict(mapped))
context = {
'reservations': reservations,
'values': ValueSet
}
return render(request, "reservations.html", context)
def sort_by_rental_name(r:any) -> list:
for i in r:
Qset = Reservations.objects.filter(rental_id__name=i[0])
QsetLs = list(Qset)
objects_value_ls = []
for i in QsetLs:
if i.id is min([k.id for k in QsetLs]):
objects_value_ls.append("-")
objects_value_ls.append(QsetLs[QsetLs.index(i)-1].id)
objects_value_ls.remove(objects_value_ls[1])
yield objects_value_ls