2

/path/{self.id}.jpgとして保存する必要がある画像をアップロードできるようにするには、djangoの管理者が必要です

これまでのところ、id、status、title フィールドを持つデータベースと、id、status、title、THUMB フィールドを持つモデルがあります。

class MEL(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    status = models.IntegerField(choices=( (0, 'inactive'), (1, 'active') ), default=1)
    title = models.TextField(verbose_name='Título')
    thumb = models.ImageField(upload_to=upload_path)

    class Meta:
        db_table = u'MEL'

問題は、画像が保存されるモデルに以前にアップロードされているため、現時点では「self.id」に保存できません。/tmp/{uuid} に保存して、保存後に名前を変更できると思います。おそらく次のようになります。

def upload_path(self, filename):
    self.file_uuid = uuid.uuid4()
    return '/tmp/' + self.file_uuid

次に、名前を変更して /tmp/ から削除するポストセーブ

または、このモデルの save() メソッドをオーバーライドして、最初に super().save() を呼び出してから、(ImageFieldFile オブジェクトにある) 画像のアップロードを処理して、名前を self.id に変更することもできます。

提案?

ありがとう

4

1 に答える 1

-1

upload_to を使用してファイル名を変更できるはずです。これは、プロジェクトで行ったことがあり、django のドキュメントにそう書かれているためです

そのリンクの 3 番目の段落には、次のように書かれています。[強調を追加]。私は皮肉を言うつもりはありません。これが可能であり、可能であるべきであることを示しているだけなので、何か他のことが起こっているに違いありません.

このようなことを試してください。問題は、拡張機能をオフにしている可能性があります。

def upload_path(self, filename):
    basename, extension = os.path.splitext(filename)
    return '/'.join(["path",("%s%s" % (self.id, extension))])
于 2012-04-17T18:28:18.363 に答える