3

ドキュメントを読んだので、少し混乱しました。私はそのようなモデルを持っています

class Image(models.Model):
name = models.CharField(max_length=80)
file = models.ImageField(upload_to = 'project_images')
description = models.CharField(max_length=30)

def __unicode__(self):
    return self.name

ファイルのアップロードの処理は、管理インターフェイスを介して行われますが、これは機能しますが、アップロードがコミットされたときに存在する他のフィールドに基づいて、データに対してさらにいくつかのことを行う必要があります。

基本的に、現在のディレクトリはproject_images私がやりたいことです。保存するときは、画像を ---> に配置する必要がありますproject_images/<year>/<month>。保存するファイル パスは、データベースに保存するときにこれを反映する必要があり、ファイル名も名前フィールドに保存する必要があります。

これを行う背後にあるロジックを理解しています。

  1. チェックポスト
  2. 有効なチェック(ImageFieldはこれをすでに処理していると思います)
  3. ファイル名を取得
  4. 年月を取得する(数値)
  5. ディレクトリが存在するかどうかを確認する
  6. ディレクトリが存在しない場合は作成し、使用する場合は作成します
  7. 名前をファイル名に設定します
  8. アップロードしてすべて保存

これはどこに指定すればよいのでしょうか?保存メソッドの下のモデルでは?

これがドキュメントで指定されている場合は申し訳ありませんが、これは私を混乱させたドキュメントの1つの領域です.

ありがとう

4

2 に答える 2

1
from django.db import models
import datetime
import os
import uuid
# Create your models here.
def get_file_path(instance,filename):
        ext=filename.split('.')[-1]
        filename="%s.%s" % (uuid.uuid4(),ext)
        return os.path.join(instance.directory_string_var,filename)

class Image(models.Model):
        file=models.ImageField(upload_to=get_file_path)

        now=datetime.datetime.now()
        directory_string_var = 'image/%s/%s/%s/'%(now.year,now.month,now.day)

モデルを上記のものに変更します。

これにより、ファイルがメディア/年/月/日のフォルダーにランダムな名前で保存されます。

ファイル名をランダムにしたくない場合は、コメントアウトしてください

ext = filename.split('.')[-1] #and 
filename="%s.%s" % (uuid.uuid4(),ext)
于 2013-07-01T07:25:56.810 に答える
0

これをチェックして:

djangoでファイルをアップロードするときに年/月/日構造を作成する方法

したがって、モデルでは、次のことができます。

class Image(models.Model):
    name = models.CharField(max_length=80)
    file = models.ImageField(upload_to = 'project_images/%Y/%m')
    description = models.CharField(max_length=30)

    def __unicode__(self):
        return self.name

upload_to の '%Y/%m' 部分は strftime フォーマットです。「%Y」は 4 桁の年、「%m」は 2 桁の月

これを確認する必要があります:

http://scottbarnham.com/blog/2007/07/31/uploading-images-to-a-dynamic-path-with-django/

これが役に立ったことを願っています

于 2013-07-01T07:16:53.757 に答える