У меня есть модель django со следующими четырьмя полями:
class File:
id = models.PrimaryKey()
name = models.CharField()
is_active = models.BooleanField()
data = models.JSONField()
Поле data огромно, возможно, 5 МБ на запись. Есть ли способ скрыть это поле при выполнении запроса ORM без необходимости указывать все поля, которые я хочу просматривать каждый раз? Что-то типа:
File.objects.all() # exclude data field
File.objects.values('id', 'data') # include the data field






Вы можете использовать only (), чтобы указать нужные поля
File.objects.only('id', 'data')
В некоторых сложных ситуациях моделирования данных ваши модели могут содержать много полей, некоторые из которых могут содержать много данных (например, текстовые поля) или требовать дорогостоящей обработки для их преобразования в объекты Python. Если вы используете результаты набора запросов в ситуации, когда вы не знаете, нужны ли вам эти конкретные поля при первоначальном извлечении данных, вы можете указать Django не извлекать их из базы данных.
Это делается путем передачи имен полей, которые не загружаются в defer():
Entry.objects.defer("headline", "body")
Также отметьте, что всякий раз, когда вы вызываете only(), он заменяет набор полей для немедленной загрузки. Название метода мнемоническое: сразу загружаются только эти поля; остальные отложены.
См. этот вопрос о том, как отложить загрузку полей в модели, и я думаю, это то, что вам нужно.