Есть ли какие-либо преимущества или недостатки в использовании обратных аксессоров по сравнению с прямыми запросами?
Так получилось, что я работаю над существующим проектом, в котором используется много прямых запросов вместо обратных аксессоров. Возьмем следующий надуманный пример:
class Student(Model):
name = CharField(...)
school = ForeignKey(School, ...)
class School(Model):
def get_daves(self):
...
Метод 'get_daves' на School может быть реализован одним из следующих способов:
def get_daves(self):
return self.student_set.filter(name='Dave')
def get_daves(self):
return Student.objects.filter(school=self, name='Dave')
А в проекте, над которым я работаю, похоже, много последнего, тогда как я обычно использую первый вариант.
Кроме того, что это более лаконично и, возможно, более понятно, что вы задумали, есть ли другие причины использовать метод обратного аксессора вместо прямого запроса к студентам.
Я предполагаю, что под капотом они приводят к эквивалентным запросам к БД и одинаковому объему работы по построению моделей при итерации набора запросов. Я просто хотел убедиться, что нет веских причин для того, чтобы начать изменять все экземпляры прямых запросов в проекте по мере их обнаружения.