Я думаю, что вы можете использовать связь ManyToMany между Weather
и Route
моделью с отношением through
. Как это:
import datetime
class Trip(models.Model):
routes = models.ManyToManyField(Weather, through="TripRoute")
class TripRoute(models.Model):
route = models.ForiegnKey(Route,related_name='weathers', on_delete=models.CASCADE)
weather = models.ForiegnKey(Weather, related_name='routes', on_delete=models.CASCADE)
trip = models.ForiegnKey(Trip, related_name='route_trips', on_delete=models.CASCADE)
Теперь вы можете поместить в модель Route
функцию для извлечения одного экземпляра Weather
, например:
class Route(models.Model):
...
def get_weather(self, date=None):
if not date:
date = datetime.date.today()
return self.weathers.filter(date=date).last().weather
Использование:
trip = Trip.objects.first()
routes = trip.routes.all()
for r in routes:
r.get_weather()