В Django, если у меня есть класс модели, например.В Django вы можете добавить метод к запросам?
from django.db import models
class Transaction(models.Model):
...
затем, если я хочу добавить методы к модели, хранить, например. достаточно сложные фильтры, я могу добавить пользовательский диспетчер моделей, например.
class TransactionManager(models.Manager):
def reasonably_complex_filter(self):
return self.get_query_set().filter(...)
class Transaction(models.Model):
objects = TransactionManager()
И тогда я могу сделать:
>>> Transaction.objects.reasonably_complex_filter()
Есть ли способ, я могу добавить пользовательский метод, который может быть прикован к концу запроса набора из модели?
т.е. добавить пользовательский метод таким образом, что я могу это сделать:
>>> Transaction.objects.filter(...).reasonably_complex_filter()
Право, получено. Знаете ли вы, что метод, предложенный в этом блоге, работает надежно? Комментарии предполагают, что подход '__getattr__' имеет некоторые проблемы. –
Я не ставил этот код на практике сам, но я уже давно видел '__getattr__', который был использован в проектах Django раньше аналогичным образом. –
Статья довольно старая, но дело в том, что вам нужно прикрепить свои методы к объекту QuerySet. –