Как получить имена полей, которые были выбраны с помощью метода "only()"?
Например, у меня есть простая модель:
class Person(models.Model):
    id = models.BigAutoField("id", primary_key=True)
    first_name = models.CharField(max_length=150)
    surname = models.CharField(max_length=150)
    age = models.IntegerField()
Я использую метод только для выбора нужных мне полей:
queryset = Person.objects.all().only("first_name", "age")
Как получить имена полей("фамилия_имя", "возраст"), которые были выбраны?
 Я попробовал следующее:
queryset.query.get_loaded_field_names()
 Но я получил эту ошибку:
AttributeError:'Query' object has no attribute 'get_loaded_field_names'
 Вы можете использовать метод .get_select_mask() объекта .query: 
queryset.query.get_select_mask()
Это вернет словарь, где ключами являются объекты полей, так что вы можете получить название полей с помощью:
[f.name for f in queryset.query.get_select_mask()]
This is however not a good idea from a software engineering perspective: the entire idea is that .only(…) [Django-doc] and .defer(…) [Django-doc] are used in a transparent manner.