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

Reply via email to