Вы делаете два запроса, но они выполняются в разное время.
Querysets ленивы. Запрос в Foo.objects.all()
не выполняется, пока форма не будет отображена. Это означает, что список доступных объектов Foo всегда будет актуальным.
Однако Foo.objects.get(pk=14)
выполняется, когда форма определена , то есть при первом импорте модуля. Таким образом, это значение сохраняется в запросах до тех пор, пока процесс сервера остается активным. Это хорошо, потому что запрос выполняется не каждый раз, но потенциально плохо, что значение останется, даже если объект будет позже удален из базы данных.
Чтобы ответить на ваш конкретный вопрос, вы фактически делаете здесь только один запрос каждый раз.