2
我想在我的模型中覆蓋保存方法來創建合適的slug並在其中進行小修改來創建imagefield副本。我該如何處理?Django覆蓋保存
def save(self, *args, **kwargs):
super(MyModel, self).save(*args, **kwargs) #to get id
#slug
self.slug = '%s-%i' % (self.topic, self.id)
#create copy of img
cp_path = dirname(self.image.path)+'/copies_'+basename(self.image.path)
shutil.copy2(self.image.path, cp_path)
file = open(cp_path)
django_file = File(file)
django_file.name = basename(cp_path) #otherwise path will be duplicated
self.cp_image = django_file
super(MyModel, self).save(*args, **kwargs) #to save my new ImageField
create_watermark(self.cp_image, self.topic, self.text, 500, 45)
原因我使用super(MyModel,self).save()兩次我有一個self.image文件的副本。正如你所看到的,我對django和python不是很熟悉。我該如何做得更好?
不幸的是它會導致「沒有這樣的文件或目錄:」錯誤如果我不會用save()方法之前,我嘗試對文件進行操作。 – MilkyWay 2011-05-03 19:54:39
哦,然後將整個保存移動到post_save處理程序。這也可以讓你檢查created = True只做一次。 – 2011-05-03 20:38:34