Django ORM: оболочка для модельных объектов
Я ищу какой-то способ определить некоторую оболочку, которая вызывается до того, как я позвоню Model.objects.all()
,
Я хочу всякий раз, когда я звоню, Model.objects
он вызывает мой метод (обертку), а затем возвращает объекты обратно в запрос.
Давайте возьмем пример:
MyModel.objcts.filter(name="Jack")
Упаковочный:
def mymodelWrapper(self):
return self.objects.annotate(size=Sum('id', field='order_size_weight*requested_selling_price'))
Я хочу запустить аннотацию в фоновом режиме, а также хочу применить фильтр. Я знаю, чего я хочу достичь, это код, который я ищу, как это сделать.
1 ответ
То, о чем вы говорите, вполне выполнимо с Django, используя специальный менеджер моделей:
class MyModelManager(models.Manager):
def get_query_set(self):
return super(MyModelManager, self).get_query_set().annotate(size=Sum('id', field='order_size_weight*requested_selling_price'))
class MyModel(models.Model):
objects = MyModelManager()
# fields
Также смотрите другие похожие темы: