1

他のフィールドの中でも特に、FileField を持つ ModelForm があります。myform.save() を呼び出すときにファイル名を変更して、衝突を回避したかった (6 つのランダムな文字をファイル名に挿入する)。Djangoでこれを行う適切な方法は何ですか?

4

1 に答える 1

2

saveフォームのメソッドではなく、モデルのメソッドをオーバーライドする必要があります。

class MyModel(models.Model):
    # other fields
    my_file = models.FileField(upload_to='uploaddir')

    def save(self, *args, **kwargs):
        new_name = 'file_name-random-chars.ext'
        self.my_file.name = new_name
        super(MyModel, self).save(*args, **kwargs)

ModelForm forMyModelは、モデルの save メソッドを呼び出して、トリックを実行します。それが役に立てば幸い :)

于 2012-05-15T23:17:54.237 に答える