псевдонимы запроса django - PullRequest
       3

псевдонимы запроса django

0 голосов
/ 12 сентября 2018

Я пишу пользовательское поле Oracle json для Django, и для его работы бэкэнд Требует имен таблиц для псевдонимов. т.е.

Это будет работать:

select t.col1.x from table_name t where t.col1.y >2

Это не будет:

select col1.x from table_name  where col1.y >2

И не будет:

select table_name.col1.x from table_name  where table_name.col1.y >2

Есть ли флаг и т. Д., Которые можно установить на поле, или бэкэнд для принудительного наложения таблиц?

Мой текущий обходной путь - это присоединение таблицы к себе, которая затем создает псевдоним, но это немного хак.

class CustomQueryManager(models.Manager):

    def filter_special(self, *args, **kwargs):

        base_q = super().filter(*args, **kwargs)
        return self.filter(id__in=base_q.values_list('id', flat=True))

В идеале я хотел бы просто использовать стандартный метод MyModel.objects.filter без принудительного самостоятельного объединения, без специального метода filter_special для менеджера.

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