0

クライアントアートを追跡するための基本的なモデルがある場合:

class ArtEntry(models.Model):
    client = models.CharField(max_length=50, choices=CLIENT_CHOICES)
    job_number = models.CharField(max_length=30, unique=False, blank=False, null=False)
    filename = models.CharField(max_length=64, unique=False, blank=False, null=False)
    descriptor = models.CharField(max_length=64, unique=False, blank=True, null=True)
    date = models.DateField(("Date"), default=datetime.date.today)
    post_type = models.CharField(max_length=64, choices=POST_CHOICES)

このモデルの最後のフィールドはファイルアップロードフィールドです。

    upload = models.FileField(upload_to='documents/*/**/***')

「upload_to」引数を動的に設定して、*=入力「client」データおよび**=入力「job_number」および* =「post_type」選択にすることは可能ですか?

4

2 に答える 2

1

もちろん。ドキュメントをチェックしてくださいupload_to

これは、ファイル名を含むアップロードパスを取得するために呼び出される関数などの呼び出し可能である場合もあります。

この回答をチェックして、問題に簡単に適応できる例を確認してください。

于 2012-05-17T21:44:07.210 に答える
0

一例;

def image_path(self, uploaded_file_name):
    prefix = 'documents/'
    extension = os.path.splitext(uploaded_file_name)[-1]
    if self.pk != None:
        return prefix + str(self.pk) + extension
    else:
        tmp_name = str(uuid.uuid4())
        self.temp_image = prefix + tmp_name + extension
        return self.temp_image

image_upload = models.ImageField(upload_to=image_path, null=True, blank=True) 

Python関数を使用する必要があります。

于 2012-05-17T21:46:57.873 に答える