#36078: Postgres date and time range fields change after saving object
----------------------------------+--------------------------------------
Reporter: Mapiarz | Owner: (none)
Type: Bug | Status: new
Component: contrib.postgres | Version: 4.2
Severity: Normal | Resolution:
Keywords: postgres | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------+--------------------------------------
Description changed by Mapiarz:
Old description:
> This short test exemplifies the problem:
>
> {{{
> now = timezone.now()
> empty_range = psycopg2_range.DateTimeTZRange(empty=True)
>
> test_model = TestModel(range=psycopg2_range.DateTimeTZRange(now, now))
>
> self.assertFalse(test_model.range.isempty)
> self.assertNotEqual(test_model.range, empty_range)
>
> test_model.save()
> test_model.refresh_from_db()
>
> self.assertTrue(test_model.range.isempty)
> self.assertEqual(test_model.range, empty_range)
> }}}
>
> I would expect the field value not to change after saving, and it should
> continue to have the lower, upper and boundary fields set.
>
> Repro project:
>
https://github.com/Mapiarz/django_postgres_range_repro/tree/master
New description:
This short test exemplifies the problem:
{{{
now = timezone.now()
empty_range = psycopg2_range.DateTimeTZRange(empty=True)
test_model = TestModel(range=psycopg2_range.DateTimeTZRange(now, now))
self.assertFalse(test_model.range.isempty)
self.assertNotEqual(test_model.range, empty_range)
test_model.save()
test_model.refresh_from_db()
self.assertTrue(test_model.range.isempty)
self.assertEqual(test_model.range, empty_range)
}}}
I would expect the field value not to change after saving, and it should
continue to have the lower, upper and boundary fields set.
Repro project:
https://github.com/Mapiarz/django_postgres_range_repro/tree/master
The example is for DateTimeRange, but DateRange Is also affected. Other
ranges possibly too, I haven't tested.
--
--
Ticket URL: <
https://code.djangoproject.com/ticket/36078#comment:1>