问题描述
我在重命名上传的图像时遇到问题。我希望我上传的图像使用名称
&-btns {
position: absolute;
top: 0;
height: 100%;
width: 100%;
z-index: 1;
display: grid;
grid-template-columns: repeat(2,1fr);
align-items: center;
text-align: center;
}
,而不是使用原始名称。如果我直接从django上传图片,则没有问题,但是我无法弄清楚如果通过Django Rest Framework上传图片该怎么做。
这是我的 model.py :
model['name'].jpg
这是我的 serializer.py :
class Shop(models.Model):
date = datetime.datetime.Now()
year_Now = int(date.strftime('%Y'))
user = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=20,unique=True)
slug = models.SlugField(default='')
logo = models.ImageField(upload_to=rename_and_path)
industry = models.CharField(max_length= 20,choices=industry_choice)
business_start = IntegerBoundedField(min_value=1950,max_value=year_Now)
franchise_start = IntegerBoundedField(min_value=1950,max_value=year_Now)
headquarter = models.CharField(max_length=100)
units = models.IntegerField()
description = models.TextField()
joined = models.DateTimeField(auto_Now_add=True)
这是我在 views.py 中的视图集:
class ShopSerializer(serializers.ModelSerializer):
class Meta:
model = Shop
fields= '['name','slug','logo','user','industry','business_start','franchise_start','headquarter','units','description','joined']'
解决方法
您要做的是在模型级别处理文件名修改,以便从您的自定义视图,django admin甚至django-rest-framework上传的所有内容都将得到相同处理。
从您的摘录中,您似乎正在尝试执行此操作,但是我没有在rename_and_path
的位置进行定义。
因此,请在您的Shop模型上方定义以下方法
def logo_dir_path(instance,filename):
extension = filename.split('.')[-1]
og_filename = filename.split('.')[0]
new_filename = "shop_%s.%s" % (instance.name,extension)
return new_filename
然后在模型的徽标字段中,添加以下属性:
logo = models.ImageField(upload_to=logo_dir_path)