0

我是一个菜鸟 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
4

1 回答 1

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

于 2013-08-19T11:50:13.390 回答