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.

Original source

Related problems