Django F expressions joined field
django, python, sql
Solution
Django 1.11 adds supports for subqueries. You should be able to do:
from django.db.models import Subquery, OuterRef
FooBar.objects.filter(something=True).update(
foobar=Subquery(FooBar.objects.filter(pk=OuterRef('pk')).values('foo__bar')[:1])
)
Problem
So I am trying to update my model by running the following: ``` FooBar.objects.filter(something=True).update(foobar=F('foo__bar')) ``` but I get the following error: ``` FieldError: Joined field references are not permitted in this query ``` if this is not allowed with `F` expressions...how can I achieve this update? ticket given the information in this ticket, I now understand that this is impossible and will never be implemented in django, but is there any way to achieve this update? maybe with some work around? I do not want to use a loop because there are over 10 million `FooBar` objects, so SQL is much faster than python.