2013-03-10 13 views
1

型號:如何在django中將兩張圖片上傳到2個不同的目錄中?

class Model1(models.Model): 
    ... 
    pic1 = models.ImageField() 
    pic2 = models.ImageField() 

我如何在形式上傳兩張圖片2個不同的目錄在Django?例如,MEDIA_ROOT/pic1 /中的pic1和MEDIA_ROOT/pic2 /中的pic2?

我已閱讀django文檔,但找不到FileField的upload_to參數的答案。

已更新:對不起,在將圖像上傳到2個不同的目錄時,如何分別對它們進行重命名? pic1將保存到MEDIA_ROOT/pic1/year-month-day-original_name.jpg和pic2到MEDIA_ROOT/pic2/year-month-day-original_name.jpg

回答

1

models.py

def get_pic1_path(instance, filename): 
    return new_path(path="pic1", filename) 

def get_pic2_path(instance, filename): 
    return new_path(path="pic2", filename) 

def new_path(path, filename): 
    today = date.now() 
    today_path = today.strftime("%Y-%m-%d") 
    image_path = "{0}-{1}".format(today_path, filename) 
    return os.path.join(path, image_path) 

class Model1(models.Model): 
    ... 
    pic1 = models.CustomImageField(upload_to=get_pic1_path) 
    pic2 = models.ImageField(upload_to=get_pic2_path) 

views.py

... 
    if request.method == 'POST': 
     form = Model1Form(request.POST, request.FILES) 
     if form.is_valid(): 
      image = Model1.objects.create() 
      pic1 = request.FILES['pic1'] 
      pic2 = request.FILES['pic2'] 

      image.pic1.save(pic1.name, image_file) 
      image.pic2.save(pic2.name, image_file) 
... 
+0

認爲這是OP正在尋找的東西。從我+1。 – 2013-03-11 06:43:26

+0

@AidanEwen也從我這裏謝謝你+1 – catherine 2013-03-11 06:44:39

1

我想我一定誤解了你的問題。當然這樣做你所描述的到底是什麼 -

class Model1(models.Model): 
    ... 
    pic1 = models.ImageField(upload_to="pic1") 
    pic2 = models.ImageField(upload_to="pic2") 

pic1領域的文件將被上傳到MEDIA_ROOT/PIC1 /並在pic2領域的文件將被上傳到MEDIA_ROOT/PIC2 /。

UPDATE

看一看在docs上upload_to參數 - 你可以把它傳遞函數動態地創建路徑,如凱瑟琳回答描述。

我知道這不太符合你的計劃,但是如果你想要一些超級簡單的東西來組織你的文件,那麼值得注意的是,你也可以在upload_to參數中使用strftime表示法。

pic1 = models.ImageField(upload_to='pic1/%Y/%m/%d') 

這將給你喜歡的路徑 - uploadding的時候/path/to/media_root/pic1/2013/03/11/filename.jpg

+0

不好意思提,圖像到2個不同的直接我怎樣才能分別重命名它們?例如pic1到MEDIA_ROOT/pic1/year-month-day-original_name.jpg和pic2到MEDIA_ROOT/pic2/year-month-day-origina2_name.jpg – 2013-03-11 01:58:27

+0

好的,這很有道理。我已經更新了我的答案。 – 2013-03-11 06:39:10

相關問題