2010-06-09 2 views
3

Я пытаюсь настроить proxy model в администраторе django. Он будет представлять собой подмножество исходной модели. Код на картинке:Настройка пользовательского SQL в django admin

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 

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

ответ

1

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

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

1

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

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

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

Смежные вопросы