【问题标题】:Update Wagtail ModelAdmin wagtailimage.Image field from outside Admin View从管理视图外部更新 Wagtail ModelAdmin wagtailimage.Image 字段
【发布时间】:2019-04-17 23:53:59
【问题描述】:

我有一个 Wagtail ModelAdmin,它有一个模型,其字段类型为 wagtailimage.Image,代码如下:

partner_logo = models.ForeignKey(
    'wagtailimages.Image',
    null=True,
    blank=True,
    on_delete=models.SET_NULL,
    related_name='+'
)

我已注册此 ModelAdmin,因此我可以在 Wagtail Admin 视图中对其进行编辑,并将图像成功上传到 partner_logo 字段。然后我可以从管理视图更新图像。

我希望用户能够从前端更新图像。我创建了一个获取图像并将其传递给后端的表单。然后我尝试使用以下代码更新图像:

def upload_pic(request):
    if request.method == 'POST':
        partner_name = request.user.partner().partner_name
        partner_model = Partner.objects.get(partner_name=partner_name)

        partner_model.partner_logo.file = request.FILES['image']
        partner_model.partner_logo.save(update_fields=['file'])

        return HttpResponse('image upload success')
    return HttpResponseNotAllowed('allowed only via POST')

这将获取我们要更新的正确模型,为partner_logo 字段设置文件,然后保存模型。我相信我是其中的一部分,因为图像在保存时上传到我的媒体目录,但是我想我错过了更新其他内容,因为它实际上并没有更新模型。

任何建议都会很棒!谢谢。

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    在这里找到答案:https://stackoverflow.com/a/42551931/909446

    下面的工作代码:

    from wagtail.images.models import Image
    
    
    def upload_pic(request):
        if request.method == 'POST':
            partner_name = request.user.partner().partner_name
            partner_model = Partner.objects.get(partner_name=partner_name)
    
            new_logo = Image.objects.create(
                file=request.FILES['image'],
                title=f'{partner_name}-logo'
            )
    
            partner_model.partner_logo = new_logo
            partner_model.save()
    
            return HttpResponse('image upload success')
        return HttpResponseNotAllowed('allowed only via POST')
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-13
      • 2017-08-06
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多