在Django中,如何将文件从模型移动到磁盘上的目录?

时间:2016-10-25 22:30:12

标签: django django-models

我有一个存储.exe文件的模型。我想从模型中取出该文件并将其粘贴到特定文件夹中而不更改模型。有什么想法吗?

模型是这样的:

{{1}}

我需要能够从模型中提取程序安装程序,切断它与模型本身的任何连接,然后在模型中放入一个新文件(同时将旧安装程序保留在一个单独的位置)。

1 个答案:

答案 0 :(得分:2)

FileField默认情况下使用django.core.files.storage.FileSystemStorage,因此它包含带文件名(文件路径)的字符串,而不是文件本身。只需使用该文件名(路径)将文件复制到您需要的目的地。

从这里https://docs.djangoproject.com/en/dev/topics/files/#using-files-in-models

  

当您使用FileField或ImageField时,Django提供了一组API   你可以用来处理那个文件。

     

考虑以下模型,使用ImageField存储照片:

from django.db import models

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo = models.ImageField(upload_to='cars')
     

任何Car实例都会有一个可以用来获取的照片属性   附上照片的详细信息:

>>> car = Car.objects.get(name="57 Chevy")
>>> car.photo
<ImageFieldFile: chevy.jpg>
>>> car.photo.name
'cars/chevy.jpg'
>>> car.photo.path
'/media/cars/chevy.jpg'
>>> car.photo.url
'http://media.example.com/cars/chevy.jpg'