如果我正确阅读了文档,则Django中的FileField不知道文件的content_type:https://docs.djangoproject.com/en/2.1/ref/models/fields/
我想将文件存储在Django应用程序中,但是我想查询content_type。
示例:
最类似于Django的处理方式是什么?
答案 0 :(得分:1)
假设您的模型如下:
class Foo(models.Model):
myfile = models.FileField(upload_to='files/')
content_type = models.CharField(null=True, blank=True, max_length=100)
myfile
字段用于存储文件,content_type
字段用于存储对应文件的内容类型。
您可以通过覆盖 content_type
模型的 save()
方法来存储文件的 Foo
类型。
Django文件字段提供了 file.content_type
属性,以处理文件的content_type
类型。因此,将模型更改为:
class Foo(models.Model):
myfile = models.FileField(upload_to='files/')
content_type = models.CharField(null=True, blank=True, max_length=100)
def save(self, *args, **kwargs):
self.content_type = self.myfile.file.content_type
super().save(*args, **kwargs)
现在,您可以使用filter()
来查询ORM:
Foo.objects.filter(content_type='application/pdf')