According to the
documentation on models.OuterRef:
It acts like an F
expression except that the check to see if it refers to a valid field isn’t made until the outer queryset is resolved.
I am experiencing an issue with this using the following example:
class ExampleModel(models.Model):
date = models.DateField()
value = models.IntegerField()
subquery = ExampleModel.objects.filter(
date__gte=models.OuterRef('date') - timedelta(days=2),
date__lte=models.OuterRef('date') + timedelta(days=2),
value__lte=5
)
queryset = ExampleModel.objects.annotate(
value_is_less_than_five=models.Exists(subquery)
)
The result that I am getting is:
AttributeError: 'ResolvedOuterRef' object has no attribute 'relabeled_clone'
From my understanding, if this is similar to an F Expression, you should be able to perform the timedelta on the OuterRef. I also found someone else on
StackOverflow with the same issue.
What I would like to know is if this is a bug (e.g. should it be supported), or a documentation issue.
Thanks in advance for your assistance!