<- F выражение в Django ORM
Выражение F() в Django ORM позволит вам использовать поля текущей модели в ваших запросах. Например, вы хотите увеличить значение поля на единицу, на ум приходит следующий код:
article = Article.objects.get(pk=1)
article.count += 1
article.save()
Но данный код можно реализовать более элегантным способом:
Article.objects.filter(pk=1).update(count=F('count') + 5)
Более практичный пример, сравнивать поля текущей модели.
In [2]: Article.objects.create(count=1, number_of_likes=10)
Out[2]: <Article: Article object>
Попробуем сделать сравнение
In [3]: from django.db.models import F
In [4]: Article.objects.filter(number_of_likes__gte=F('count'))
Out[4]: [<Article: Article object>]
Посмотрим какой SQL запрос был сгенерирован
In [5]: print Article.objects.filter(number_of_likes__gte=F('count')).query
SELECT "example_article"."id", "example_article"."content", "example_article"."count", "example_article"."number_of_likes" FROM "example_article" WHERE "example_article"."number_of_likes" >= ("example_article"."count")
Если вам интересно узнать как работают F выражения изнутри советую прочитать старенькую статью Ивана Сагалаева.