#31609: Add support for Table Function Model
-------------------------------------+-------------------------------------
               Reporter:  Petr       |          Owner:  nobody
  Přikryl                            |
                   Type:  New        |         Status:  new
  feature                            |
              Component:  Database   |        Version:
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 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

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31609>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/054.665b4d7fe42af72db4641328359ad6ef%40djangoproject.com.

Reply via email to