#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.