Задать вопрос
Ответы пользователя по тегу ORM
  • django Создание SQL запроса через ORM с не явными связми, возможно ли?

    cachealot
    @cachealot Автор вопроса
    Пока писал вопрос в Q&A разобрался в ORM.

    Конкретно в моем случае запрос можно переписать c JOIN на WHERE:

    SELECT * FROM pybb_forum as ff,guardian_groupobjectpermission as gg, auth_permission as pp 
         WHERE codename = 'view_forum'      
         AND gg.group_id in (1,2,3)     
         AND gg.content_type_id = 9 
         AND  ff.id = gg.object_pk 
         AND gg.permission_id = pp.id;
    


    a WHERE уже довольно просто подставить в objects.extra:

    Forum.objects.extra(
        tables = ['guardian_groupobjectpermission', 'auth_permission'],
        where = [""" codename = "view_forum"
        AND guardian_groupobjectpermission.group_id in (1,2,3)
        AND guardian_groupobjectpermission.content_type_id = 9
        AND pybb_forum.id = guardian_groupobjectpermission.object_pk
        AND guardian_groupobjectpermission.permission_id = auth_permission.id
        """]
    )
    


    Единственная проблема — совсем пропала читабельность такого запроса.
    Ответ написан
    Комментировать