#30476: Add detection for PostgreSQL json field, aside from the already existing
detection for jsonb field, using inspectdb
-------------------------------------+-------------------------------------
               Reporter:  Héctor     |          Owner:  (none)
  Pablos                             |
                   Type:  New        |         Status:  new
  feature                            |
              Component:             |        Version:  2.2
  contrib.postgres                   |       Keywords:  inspectdb,
               Severity:  Normal     |  JSONField, json, jsonb
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Right now, the {{{inspectdb}}} command, when the
 {{{django.contrib.postgres}}} app is added to {{{INSTALLED_APPS}}} in the
 settings, is able to detect {{{jsonb}}} fields and generate a model with
 the right {{{django.contrib.postgres.fields.JSONField}}}, but that's not
 the case for simple {{json}} fields.

 
[https://docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#django.contrib.postgres.fields.JSONField
 The documentation] states that the {{{JSONField}}} uses internally a
 PostgreSQL {{{jsonb}}} field, but I wonder if normal {{{json}}} fields
 could also be detected as a {{{JSONField}}}, as they can perfectly work
 for unmanaged models.


 I'm happy to do a patch for this if it's considered necessary, adding an
 additional key to the ones provided by the {{{contrib.postgres}}} module
 inside the
 [https://github.com/django/django/blob/2.2/django/contrib/postgres/apps.py#L49
 data_types_reverse dict] with the following information:

 {{{
 114:  'django.contrib.postgres.fields.JSONField',
 }}}

 And the documentation and tests considered being necessary.

 The id 114 is the OID of the {{{json}}} data type in PostgreSQL, at least
 in its 11.1 version. You can check this by executing the following query:

 {{{#!sql
 SELECT oid, typname
 FROM pg_catalog.pg_type
 WHERE typname='json';
 }}}

 Also happy to check other database versions if needed.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30476>
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.57cac60a5b8f918dd67a2cd94e127988%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to