【问题标题】:Wagtail: Passing Django form to WagtailAdmin (Sidebar: Forms)Wagtail:将 Django 表单传递给 WagtailAdmin(侧边栏:表单)
【发布时间】:2017-04-01 17:15:04
【问题描述】:

我有一个非常有趣的任务。

  • 带有 FileField 的 Wagtail 表单 - 用于图片上传(我想这还不可能)

鉴于这在 Wagtail 中还不可能,我尝试了另一件事。

  1. 实际上有一个 FileField 的 Django 表单(来自此示例 django form in wagtail)。
  2. 生成上传图片的链接(比如“/media/pics/image_example.jpg”)
  3. 不知何故将此链接(文本字段)传递给 Wagtail Form 并自动提交。

所以最后,我们在 WagtailAdmin 中有一个表单提交,其中有一个字段,其中包含上传图像的直接 url。

但是.. 我真的不明白这必须如何工作。有任何想法吗?也许对我的问题有更好的解决方案。

【问题讨论】:

    标签: python django wagtail


    【解决方案1】:

    有下面提到的方法

    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() 将保存您的数据。

    【讨论】:

    • 哦!这太棒了!但最后一个问题。如何将此字段实现到模板表单中?
    • 你不需要在表单中做任何事情
    • 但是如何在 WagtailAdmin 中显示表单提交?
    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2010-12-31
    • 2022-01-05
    • 2020-04-13
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多