【发布时间】:2012-04-22 17:45:42
【问题描述】:
我需要在没有完整路径的情况下保存文件以及文件名。 我这样做了:
class Photo(models.Model):
photo = models.ImageField(upload_to = settings.PATH_PHOTOS_SOURCE)
user = models.ForeignKey(UserProfile, editable=False)
item = models.ForeignKey(Item, default=0)
filename = models.CharField(max_length=100, default='', editable=False)
def save(self, *args, **kwargs):
self.filename = os.path.basename(self.photo.url)
super(Photo, self).save(*args, **kwargs)
这是可行的,但是存在这样的情况,当具有现有名称的文件已经存在,并且在磁盘中写入文件example_1.jpg,example_2.jpg,但在文件名中保存不正确的文件名example.jpg时
我改变了我的保存方法:
def save(self, *args, **kwargs):
super(Photo, self).save(*args, **kwargs)
self.filename = os.path.basename(self.photo.url)
super(Photo, self).save()
它的工作,但我不喜欢这个代码,也许是更优雅的代码。
我尝试使用信号来执行此操作,但我遇到了保存递归的问题。
【问题讨论】:
标签: django django-admin