Я пишу пользовательское поле 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
для менеджера.