#21454: Ignoring certain fields on INSERT and UPDATE queries
----------------------------------------------+--------------------
     Reporter:  mpessas                       |      Owner:  nobody
         Type:  New feature                   |     Status:  new
    Component:  Database layer (models, ORM)  |    Version:  master
     Severity:  Normal                        |   Keywords:
 Triage Stage:  Unreviewed                    |  Has patch:  1
Easy pickings:  0                             |      UI/UX:  0
----------------------------------------------+--------------------
 There are cases that you would like to let the database handle certain
 fields. For instance,

 - Set fields to their default value at the database-level (such as a
 `created` timestamp).
 - Have the value of fields computed always by the database (e.g. with a
 trigger).
 - Have virtual fields in the database etc.

 The first case is especially important for timestamps, since setting the
 default to `NOW()` will make sure (at least in postgres) that all rows
 inserted under the same transaction will have the same timestamp (compared
 to how auto_now_add works). This means that, when you insert a lot of
 objects in one transaction, they will all have the exact same timestamp.
 Moreover, relying on the database for setting default values to fields
 reduces the amount of data that need to be sent to
 the database server.

 The second and third case allow to move some of the logic to the database
 and take advantage of some features they offer as well as speed up some
 things.

 In order to achieve this (without resorting to hacks, like ignoring the
 values that django sends in the database), django should ignore these
 fields, when constructing an INSERT or UPDATE query. This could be done by
 allowing a field to tell django to ignore it on INSERT or UPDATE queries,
 the same way it does now for AutoFields.

 You can find an implementation of this approach at
 
https://github.com/mpessas/django/commit/a663d8f95d9cca5112ccd33e3a303cae82908b60
 and a demo project at https://github.com/mpessas/dbfield (timestamp app).

-- 
Ticket URL: <https://code.djangoproject.com/ticket/21454>
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.f03df8372871b6ac01038e47858299c5%40djangoproject.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to