我正在为json
编写一个自定义的Oracle Django
字段,并使其工作在后端。 Requires 表名必须使用别名。即
这将起作用:
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
方法。