#33590: Related object is not resolved
--------------------------------------------+------------------------
               Reporter:  Stefan de Konink  |          Owner:  nobody
                   Type:  Bug               |         Status:  new
              Component:  Uncategorized     |        Version:  4.0
               Severity:  Normal            |       Keywords:
           Triage Stage:  Unreviewed        |      Has patch:  0
    Needs documentation:  0                 |    Needs tests:  0
Patch needs improvement:  0                 |  Easy pickings:  0
                  UI/UX:  0                 |
--------------------------------------------+------------------------
 I have the following setup; two managed models, and an unmanaged model
 which is a facade for a view in PostgreSQL. I can reduce the issue to only
 the unmanaged table with ordinary integer fields.

 {{{
 class NextSchedule(models.Model):
     scheduled = models.DateTimeField(blank=False, null=False,
 verbose_name=_('at'))
     exact_schedule_id = models.IntegerField(null=False)
     negative_schedule_id = models.IntegerField(null=True)

     class Meta:
         managed = False
 }}}

 My practical issue is that I am unable to get negative_schedule_id to be
 shown up. It is worse: when I explicitly query only a column with this
 value the queryset is empty.

 {{{
 blxa=> SELECT "blxadmin_nextschedule"."id",
 "blxadmin_nextschedule"."scheduled",
 "blxadmin_nextschedule"."exact_schedule_id",
 "blxadmin_nextschedule"."negative_schedule_id" FROM
 "blxadmin_nextschedule";
  id |      scheduled      | exact_schedule_id | negative_schedule_id
 ----+---------------------+-------------------+----------------------
   7 | 2022-03-21 01:00:00 |                 1 |                    1
 (1 row)
 }}}

 {{{
 >>> NextSchedule.objects.all()
 <QuerySet []>
 }}}

 The crazy thing is, if the to_time of the negative schedule is increased
 over one hour, it will give a result. Mind you: we are still talking about
 an unrelated IntegerField, where as the query from PostgreSQL returns the
 same values.

 {{{
 >>> NextSchedule.objects.all()
 <QuerySet [<NextSchedule: NextSchedule object (7)>]>
 }}}

 So what about the view? The most simple view I can break it with is below,
 absolutely no fancy stuff other than a left join.
 {{{
 blxa=> create view blxadmin_nextschedule as select row_number() over
 (order by scheduled) as id, scheduled, exact_schedule_id, v.id as
 negative_schedule_id from (select '2022-03-21'::date + '01:00:00'::time as
 scheduled, 1 as exact_schedule_id) as u left join
 blxadmin_negativeschedule as v on (u.scheduled between v.from_datetime and
 v.to_datetime)  order by scheduled asc;
 CREATE VIEW
 blxa=> SELECT "blxadmin_nextschedule"."id",
 "blxadmin_nextschedule"."scheduled",
 "blxadmin_nextschedule"."exact_schedule_id",
 "blxadmin_nextschedule"."negative_schedule_id" FROM
 "blxadmin_nextschedule";
  id |      scheduled      | exact_schedule_id | negative_schedule_id
 ----+---------------------+-------------------+----------------------
   1 | 2022-03-21 01:00:00 |                 1 |                    1
 (1 row)
 }}}

 Empty result.
 {{{
 NextSchedule.objects.get(id=1).negative_schedule_id
 }}}

 The model to reproduce it with simplified;
 {{{
 class NegativeSchedule(models.Model):
     from_datetime = models.DateTimeField(blank=False, null=False)
     to_datetime = models.DateTimeField(blank=False, null=False)
 }}}

 Date range that it does not work with:
 21-03-2022 01:00:00 - 21-03-2022 01:59:59

 Date range that it shows up with a value:
 21-03-2022 01:00:00 - 21-03-2022 02:00:00

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33590>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107017fa97e3d6d-cc9c149f-0b29-4886-8ea9-00af90c805dd-000000%40eu-central-1.amazonses.com.

Reply via email to