Установка собственного SQL в админке django - PullRequest
3 голосов
/ 10 июня 2010

Я пытаюсь настроить модель прокси в админке django. Он будет представлять собой подмножество исходной модели. Код из models.py:

class MyManager(models.Manager):
    def get_query_set(self):
        return super(MyManager, self).get_query_set().filter(some_column='value')

class MyModel(OrigModel):
    objects = MyManager()
    class Meta:
        proxy = True

Теперь вместо filter () мне нужно использовать сложный оператор SELECT с JOINS. Как правильно полностью внедрить его в пользовательский менеджер?

Ответы [ 2 ]

2 голосов
/ 13 июня 2010

Django предоставляет модификатор extra () QuerySet - хук для вставки определенных предложений в SQL, сгенерированный QuerySet.

Это может использоваться в сложных случаях, возможно, с однимили более дополнительных запросов.

1 голос
/ 10 июня 2010

Если вы хотите использовать ORM далее в MyModel.objects raw SQL не является решением.В случае необработанного SQL предоставляется итератор.

Вы не можете создавать какие-либо цепочки для объектов MyModel (). В качестве фильтра, исключать и т. Д. Если это возможно в админке, например, фильтрация будетне работать в нем.Если вам нужны эти функции, единственный выбор, который у вас есть, - не использовать raw sql в вашем методе get_query_set ваших менеджеров.

Я не знаю, возможен ли Manager.raw даже в admin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...