我是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
答案 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_delete
或post_delete
自动删除相关文件。
请参阅https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield-and-fieldfile