2017-04-01 35 views
0

我有一個非常有趣的任務。W::將Django表單傳遞給WagtailAdmin(邊欄:表單)

  • 鶺鴒形成具有的FileField - 對於圖片上傳(我想這是不可能的還)

從,這是不可能的地步但在鶺鴒我試過另外一件事。

  1. 一個Django窗體(從這個例子django form in wagtail)實際上有一個FileField。
  2. 生成上傳圖片的鏈接(比如說'/media/pics/image_example.jpg')
  3. 不知何故將此鏈接(文本字段)傳遞給W Form窗體並自動提交。

因此,最後,我們在WagtailAdmin中提交表單提交,其中包含一個帶有直接鏈接到上傳圖片的字段的表單。

但是..我真的不明白這是如何工作的。有任何想法嗎?也許對我的問題有更好的解決方案。

回答

0

有一種方法如下面提到

def content_file_name(instance, filename): 

    import random 
    import string 

    # random_str length will be 16 which will be combination of (4 digits + 4 characters + 4 digits + 4 characters) 
    random_str = "".join([random.choice(string.uppercase) for i in range(0,4)]) + "".join([random.choice(string.digits) for i in range(0,4)]) + \ 
        "".join([random.choice(string.lowercase) for i in range(0,4)]) + "".join([random.choice(string.digits) for i in range(0,4)]) 

    # return string seperated by hyphen eg: 
    random_str = random_str[:4] + "-" + random_str[4:8] + "-" + random_str[8:12] + "-" + random_str[12:] 
    filetype = filename.split(".")[-1].lower() 
    filename = random_str +"." + filetype 
    path = "yourapp/uploads/" + str(datetime.datetime.now().year) + "/" + str(datetime.datetime.now().month) + "/" + str(datetime.datetime.now().day) + "/" 
    os_path = os.path.join(path, filename) 
return os_path 

現在添加上述方法成其具有附接 EX模型字段: -

WagtailForm.save() 將保存數據。

+0

哦!這太棒了! 但最後一個問題。如何將此字段實現爲模板形式? –

+0

您不需要在表單中做任何事 –

+0

但是如何在WagtailAdmin中顯示錶單提交? –