Wagtail:将 Django 表单传递给 WagtailAdmin(侧边栏:表单)
Wagtail: Passing Django form to WagtailAdmin (Sidebar: Forms)
我有一个非常有趣的任务。
- 带有 FileField 的 Wagtail 表单 - 用于图片上传(我想这还不可能)
从这在 Wagtail 中还不可能的角度来看,我尝试了另一件事。
- 实际上有一个 FileField 的 Django 表单(来自本示例 django form in wagtail)。
- 为上传的图片生成 link(假设为“/media/pics/image_example.jpg”)
- 以某种方式将此 link(文本字段)传递给 Wagtail 表单并自动提交。
所以最后,我们在 WagtailAdmin 中有一个表单提交,其中有一个字段直接 url 到上传的图片。
但是..我真的不明白这是怎么回事。有任何想法吗?也许我的问题有更好的解决方案。
有如下方法
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
现在将上述方法添加到您有附件的模型字段中
例如:-
atachement = models.FileField(upload_to=content_file_name, blank=True, null=True, verbose_name='Attachment')
WagtailForm.save()
将保存您的数据。
我有一个非常有趣的任务。
- 带有 FileField 的 Wagtail 表单 - 用于图片上传(我想这还不可能)
从这在 Wagtail 中还不可能的角度来看,我尝试了另一件事。
- 实际上有一个 FileField 的 Django 表单(来自本示例 django form in wagtail)。
- 为上传的图片生成 link(假设为“/media/pics/image_example.jpg”)
- 以某种方式将此 link(文本字段)传递给 Wagtail 表单并自动提交。
所以最后,我们在 WagtailAdmin 中有一个表单提交,其中有一个字段直接 url 到上传的图片。
但是..我真的不明白这是怎么回事。有任何想法吗?也许我的问题有更好的解决方案。
有如下方法
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
现在将上述方法添加到您有附件的模型字段中 例如:-
atachement = models.FileField(upload_to=content_file_name, blank=True, null=True, verbose_name='Attachment')
WagtailForm.save() 将保存您的数据。