更改上传图片的名称

时间:2013-08-19 10:29:33

标签: django django-models django-admin

我是noob django开发者,我可以上传图片,但图片名称必须更改为图片ID或我想要的任何内容。

除此之外,当我删除条目时,图像仍然在媒体文件中,但我不希望这样。

我要添加什么?

这是我的models.py

from django.db import models

class Flower(models.Model):
    name = models.CharField(max_length = 30)
    price = models.IntegerField()
    image = models.ImageField(upload_to = 'static/media')
    def __unicode__(self):
        return self.name

1 个答案:

答案 0 :(得分:2)

要自定义文件存储位置的路径和文件名,您需要为upload_to定义方法。这是一个例子:

def my_upload_to(instance, filename):
    # "instance" is an instance of Flower
    # return a path here
    return 'my/path/to/storage/' + filename

class Flower(models.Model):
    image = models.ImageField(upload_to=my_upload_to)

请参阅https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield

要删除基础文件,您需要手动拨打电话:

flower = Flower.objects.get(id=1)
flower.image.delete()

您可以选择覆盖模型的delete()方法,或使用信号pre_deletepost_delete自动删除相关文件。

请参阅https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield-and-fieldfile