Python Wagtail:将Django表单传递给WagtailAdmin(侧栏:表单)

Python Wagtail:将Django表单传递给WagtailAdmin(侧栏:表单),python,django,wagtail,Python,Django,Wagtail,我有一个非常有趣的任务 带有文件字段的摇尾表单-用于图像上传(我想这还不可能) 从这一点上说,这是不可能的,但在摇摆我已经尝试了另一件事 一个Django表单(来自本例),实际上有一个FileField 生成上传图像的链接(比如“/media/pics/image\u example.jpg”) 以某种方式将此链接(文本字段)传递给Wagtail表单并自动提交 最后,我们在WagtailAdmin中提交了表单,该表单有一个字段,其中包含上传图像的直接url 但是。。我真的不明白这是怎么回事。

我有一个非常有趣的任务

  • 带有文件字段的摇尾表单-用于图像上传(我想这还不可能)
从这一点上说,这是不可能的,但在摇摆我已经尝试了另一件事

  • 一个Django表单(来自本例),实际上有一个FileField
  • 生成上传图像的链接(比如“/media/pics/image\u example.jpg”)
  • 以某种方式将此链接(文本字段)传递给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
    
    现在将上述方法添加到具有附件的模型字段中 例如:

    WagtailForm.save()
    将保存您的数据。

    哦!这太棒了!最后一个问题。如何在模板表单中实现此字段?您不需要在表单中执行任何操作,但如何在WagtailAdmin中显示表单提交?
    atachement = models.FileField(upload_to=content_file_name, blank=True, null=True, verbose_name='Attachment')