我在django的模型就像这样
meal_img_url=models.CharField(max_length=300,default=NULL)
meal_image=models.FileField(upload_to='mealsOne/static/meal_photos');
package_cost = models.FloatField(default=0)
def __unicode__(self):
os.system("mv "+str(self.meal_image.name)+" mealsOne/static/meal_photos/web/"+str(self.id)+".jpg")
self.meal_image.name='static/meal_photos/web/'+str(self.id)+".jpg"
self.meal_img_url='http://instomeal.com/'+self.meal_image.name
self.save()
但每次移动操作都需要花费太多时间。那么有没有其他方法来保存带有id的文件(例如:id.jpg)?
答案 0 :(得分:1)
您将函数传递给#!/usr/bin/perl
use strict;
use warnings;
use Module::Load;
my $pkg = 'plugins::Blank';
Module::Load::load($pkg);
$pkg->hw();
。在那里,您可以设置图像的文件名和路径(https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to)。
该功能可能如下所示
upload_to
在你的模型中传递这个功能
def get_image_name(instance, filename):
fn = 'mealsOne/static/meal_photos/%s.jpg' % instance.id
return fn
如果尚未创建对象,则不会设置meal_image=models.FileField(upload_to=get_image_name);
。然后,您可以覆盖模型的id
方法并进行重命名。
save
您也可以使用djangos def save(self):
super(Model, self).save(*args, **kwargs)
# now the id is set
# rename your image with os.rename
....
信号(https://docs.djangoproject.com/en/1.9/ref/signals/#post-save)来执行此操作
答案 1 :(得分:-1)
一些注意事项: