2017-07-19 3 views
0

私はdjangoのドキュメントを読んできました。私は選択肢のセットを作ろうとしています。ユーザーが選択する選択に応じて、ファイルは別のフォルダに保存されます。私はこれがうまくいく方法を見つけることができないようですが。選択に応じて別のフォルダにアップロード - Django

私は現在、私のモデルとして、これを持っている:

from django.db import models 

class Document(models.Model): 

    Name = models.CharField(max_length=25, blank=True) 

    Week_1 = 'Week1' 
    Week_2 = 'Week2' 
    Week_3 = 'Week3' 
    Week_4 = 'Week4' 

    Weekly_Choices = (
     (Week_1, 'Week_1'), 
     (Week_2, 'Week_2'), 
     (Week_2, 'Week_3'), 
     (Week_2, 'Week_4') 
    ) 

    Week = models.CharField(max_length=10, choices=Weekly_Choices, default=Week_1, blank=False) 
    docfile = models.FileField() 

    if Week.choices == Week_1: 
     docfile.upload_to = 'documents/'+ Week_1 + '/' + 'Mentee' 

けれども、私はこれが動作しない理由を知っていない - 私はまだジャンゴとPythonに新しいビットごめんなさい。

私はそれをもっと調べて、Model.get_FOO_display()関数があることを知っていますが、それは私が探しているものではありません。また、get_choice関数は辞書型を出力しますが、django-choicesも見ました。私は行方不明の簡単な方法があるかもしれないことを望んでいた?

すべてのヘルプは有用であろう - ありがとう:D

答えて

0

あなたは

DOCFILEあなたのモーダルフィールドにupload_toフィールドを与えない限り、それは動作しませんが、これはあなたを助け、この

docfile = models.FileField(upload_to=location) 

def location(instance, filename): 
    if instance.Week == Week_1: 
     return 'documents/'+ Week_1 + '/' + 'Mentee' + filename 

希望をしてみてくださいout

2

試してみることができます:

def choices_location(instance, filename): 
    if instance.week == 'Week_1': 
     return os.path.join('documents', 'Week_1','Mentee', filename) 
    elif instance.week == Week_2: 
     return os.path.join('documents', 'Week_2','Mentee', filename) 

docfile = models.FileField(upload_to=choices_location) 

これはあなたのために働くでしょう!

+0

これは意味がありますが、唯一の問題は「NameError:name 'Week'は定義されていません」ということです。私は週を定義した後に関数を入れましたが、なぜその名前のエラーと言うのはわかりません – tetris12367

+0

ありがとうございます:) – tetris12367

関連する問題