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

Также смотрите другие похожие темы:

Другие вопросы по тегам