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

Filter by file size in Django (FileField)

我有一个模型:

class MyModel(models.Model):
    file = models.FileField(verbose_name='File', upload_to="files/")

我可以获得以字节为单位的文件大小:

size = my_model_instance.file.size

如何在 Django 中按文件大小进行过滤?类似的东西:

MyModel.object.filter(file.size__lt=128)

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

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