我有一个跟随班纳班。它可以由管理员编辑。
class Banner(models.Model):
name = models.CharField(max_length = 128)
link = models.TextField(max_length = 450)
image = models.ImageField(upload_to = 'banner_images')有两个问题。
任何建议都会有帮助。提前谢谢。
发布于 2011-08-05 15:27:24
试着做这样的事情:
from os import rename
class Banner(models.Model):
name = models.CharField(max_length = 128)
link = models.TextField(max_length = 450)
image = models.ImageField(upload_to = 'banner_images')
def save(self):
super(Banner, self).save()
new_filename = <insert code here to change name>
self.image.name = new_filename
rename(static_path+'banner_images/'+self.image, static_path+'banner_images/'+new_filename)
super(Banner, self).save()我不确定是否需要调用超级(Banner).save()两次。可能需要第一个文件来保存文件,第二个文件可能需要更新DB记录。
发布于 2011-08-05 20:48:27
1) upload_to可以是可调用的,在保存时可以修改它的文件名(文档)
2)参见https://code.djangoproject.com/ticket/6792,你必须自己删除它,
发布于 2011-08-18 06:34:34
由于我遇到了与通过管理节省图像有关的问题,所以我得到了以下解决方案,它回答了我所有的查询.
代码:
class BannerAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
#Remove the previous file if the object is not new
#and new file supplied.
if obj.id != None and len(request.FILES) > 0:
import os
old_obj = m.Banner.objects.get(id = obj.id)
os.remove(old_obj.image.path)如果你有类似的问题,希望这对你有帮助。
https://stackoverflow.com/questions/6957079
复制相似问题