忽略Django模型中的一个字段

4

我有一个 Django 模型,包含以下四个字段:

class File:
    id = models.PrimaryKey()
    name = models.CharField()
    is_active = models.BooleanField()
    data = models.JSONField()

data字段非常大,可能每个条目达到5MB。在进行ORM查询时,是否有一种方法可以隐藏该字段,而无需每次指定要查看的所有字段?类似于:

File.objects.all() # exclude data field
File.objects.values('id', 'data') # include the data field

1
请参考这个问题,了解如何在模型中进行延迟加载字段,我认为这正是你想要的。 - andersource
2个回答

1
您可以使用 only() 来指定您想要的字段。
File.objects.only('id', 'data')

1
在一些复杂的数据建模情况下,您的模型可能包含许多字段,其中一些可能包含大量数据(例如文本字段),或者需要昂贵的处理才能将它们转换为Python对象。如果您在某些情况下使用查询集的结果,在最初获取数据时不知道是否需要这些特定字段,您可以告诉Django不要从数据库中检索它们。
通过将不需要加载的字段名称传递给defer()来实现此目的:
Entry.objects.defer("headline", "body")

还要提到,每当您调用only()时,它都会立即替换要加载的字段集。该方法的名称是助记符:仅立即加载这些字段;其余字段被延迟加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接