1
я получил следующие модели Django:Как оптимизировать следующие запросы модели Django?
class Journey(models.Model):
user_id = models.PositiveIntegerField(db_index=True)
class Visit(models.Model):
room_id = models.PositiveIntegerField(db_index=True)
is_passed = models.BooleanField(default=False)
journey = models.ForeignKey(Journey)
И следующие методы:
class JourneyService(object):
def get_journey_by_user(self, user_id):
try:
journey = Journey.objects.get(user_id=user_id)
except Journey.DoesNotExist:
raise JourneyNotFoundError
return journey
def get_visit_by_room(self, user_id, room_id):
journey = self.get_journey_by_user(user_id=user_id)
try:
visit = journey.visit_set.get(room_id=room_id)
except Visit.DoesNotExist:
raise VisitNotFoundError
return visit
Насколько я понимаю, называя get_visit_by_room ударят базу данных дважды. Может ли это быть улучшено до одного удара? Я читал о select_related поиске, но я изо всех сил стараюсь применить его здесь.