在 Django 中按文件大小过滤(FileField)

N.C*_*.C. 5 django django-orm filefield

我有一个模型:

class MyModel(models.Model):
    file = models.FileField(verbose_name='File', upload_to="files/")
Run Code Online (Sandbox Code Playgroud)

我可以获取文件大小(以字节为单位):

size = my_model_instance.file.size
Run Code Online (Sandbox Code Playgroud)

如何在 Django 中按文件大小过滤?像这样的东西:

MyModel.object.filter(file.size__lt=128)
Run Code Online (Sandbox Code Playgroud)

dir*_*ten 8

你不能。model_instance.file.size实际上打开关联的文件并从磁盘获取大小。数据库中保存的唯一内容是文件的路径。

如果您希望能够按文件大小进行过滤,则必须将大小保存在数据库中作为模型的额外字段。您可以在保存模型时自动填充该字段。