#24991: Range types not properly converted to SQL in QuerySet.query.__str__()
----------------------------------+-----------------
     Reporter:  unklphil          |      Owner:
         Type:  Uncategorized     |     Status:  new
    Component:  contrib.postgres  |    Version:  1.8
     Severity:  Normal            |   Keywords:
 Triage Stage:  Unreviewed        |  Has patch:  0
Easy pickings:  0                 |      UI/UX:  0
----------------------------------+-----------------
 The string representation of the `QuerySet.query` object, which is useful
 in debugging, does not convert range types to their SQL equivalents,
 instead it just displays the string representation of the range type.

 {{{
 >>> import datetime
 >>> from django.utils.timezone import utc
 >>> from psycopg.extras import NumericRange, DateRange, DateTimeTZRange
 >>> from myapp.models import MyModel  # model defintion is irrelevant

 >>> print(MyModel.objects.filter(num_rng__overlap=NumericRange(1, 5)))
 SELECT [...] FROM "myapp_mymodel" WHERE ("myapp_mymodel"."num_rng" &&
 NumericRange(1, 5, '[)'))

 >>>
 print(MyModel.objects.filter(date_rng__overlap=DateRange(datetime.date(2015,
 5, 1), datetime.date(2015, 6, 1))))
 SELECT [...] FROM "myapp_mymodel" WHERE ("myapp_mymodel"."date_rng" &&
 DateRange(datetime.date(2015, 5, 1), datetime.date(2015, 6, 1), '[)'))

 >>>
 
print(MyModel.objects.filter(dt_rng__overlap=DateTimeTZRange(datetime.datetime(2015,
 5, 1, tzinfo=utc), datetime.datetime(2015, 6, 1, tzinfo=utc))))
 SELECT [...] FROM "myapp_mymodel" WHERE ("myapp_mymodel"."dt_rng" &&
 DateTimeTZRange(datetime.datetime(2015, 5, 1, 0, 0, tzinfo=<UTC>),
 datetime.datetime(2015, 6, 1, 0, 0, tzinfo=<UTC>), '[)'))
 }}}

 The expected output is `numrange(1.0, 5.0)`, `daterange('2015-05-01',
 '2015-06-01')` and `tstzrange('2015-05-01 00:00:00+00:00', '2015-06-01
 00:00:00+00:00')` respectively.

--
Ticket URL: <https://code.djangoproject.com/ticket/24991>
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/051.7d3f6f6d0c7f817d9d7f4f875cf8f2db%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to