2011-02-07 40 views
0

我有一个包含3个文件字段的模型,并在调用.save时对其进行处理。问题在于保存对象的任何FileField触发器.save。我能做些什么来一次保存多个FileField?一次在模型中保存两个文件filelds

class Record(Model): 
    name = CharField(max_length=30) 
    audio = FileField(upload_to=settings.AUDIO_ROOT) 
    alt_audio = FileField(upload_to=settings.AUDIO_ROOT, null=True) 
    sample = FileField(upload_to=settings.AUDIO_ROOT, null=True) 

def save(self, *args, **kwargs): 
    convert_files(self) 
    super(Record, self).save(*args, **kwargs) 

当音频被上传(MP3),它是从MP3转换为OGG(或反之亦然),其保存到alt_audio和样品:

def convert_files(record): 
    ... 
    record.alt_audio.save(os.path.basename(convert_to), File(open(convert_to))) 
    record.sample.save(os.path.basename(sample_name), File(open(sample_name, 'r'))) 

的问题是,alt_audio.save触发器返回record.save。如果它不是空的,我添加了每个文件字段的检查。我也想通过稍后将它提供给芹菜服务器来推迟这一行动。有没有办法不触发.save多次?

回答

3

还有,当你调用保存的可选参数。默认情况下,会触发提交,但如果您执行record.audio.save(“audiofile.mp3”,File(open(path_to_audio)),False),则不会触发save方法。

1

使用.update,也不会引发任何东西,当只对数据库

Record.objects.filter(pk=record.pk).update(field='new_value', field2='newvalue') 
相关问题