﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31609	Add support for Table Function Model.	Petr Přikryl	nobody	"Opening based on discussion here https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/django-developers/3HC3twc_pGI/HWzlwAjoAQAJ

== Motivation
I have some complex database View with CTEs. The problem here is that I need only few records from that View. But the View is always evaluated completely and limited after that. The solution here is re-writing View as Table Function https://stackoverflow.com/questions/11401749/pass-in-where-parameters-to-postgresql-view.

== Proposed usage
{{{
class MyTableFunctionModel(Model)
    parent = models.ForeignKey('self', on_delete=models.DO_NOTHING)

    class Meta:
        db_table = 'my_function'
        table_function_args = [
            TableFunctionArg(name='foo', required=False),
            TableFunctionArg(name='bar', required=False),
        ]


MyTableFunctionModel.objects.table_function(foo=1, bar='value', parent__foo=2, parent__bar='cha')

# SELECT ... FROM my_function(1, 'value') T1 JOIN my_function(2, 'cha') T2 ON T1.id = T2.parent_id
}}}

Here are some my working experiments https://gist.github.com/petrprikryl/7cd765cd723c7df983de03706bf27d1a"	New feature	closed	Database layer (models, ORM)	dev	Normal	wontfix		Petr Přikryl Ahmad A. Hussein	Unreviewed	0	0	0	0	0	0
