从管理员视图外部更新 Wagtail ModelAdmin wagtailimage.Image 字段
Update Wagtail ModelAdmin wagtailimage.Image field from outside Admin View
我有一个 Wagtail ModelAdmin,它有一个模型,该模型的字段类型为 wagtailimage.Image
,代码如下:
partner_logo = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
我已经注册了这个 ModelAdmin,所以我可以在 Wagtail 管理视图中编辑它,并成功地将图像上传到 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
字段设置文件,然后保存模型。我相信我是那里的一部分,因为图像在保存时上传到我的媒体目录,但是我想我错过了更新其他东西,因为它实际上并没有更新模型。
任何建议都很棒!谢谢。
在这里找到答案:
下面的工作代码:
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')
我有一个 Wagtail ModelAdmin,它有一个模型,该模型的字段类型为 wagtailimage.Image
,代码如下:
partner_logo = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
我已经注册了这个 ModelAdmin,所以我可以在 Wagtail 管理视图中编辑它,并成功地将图像上传到 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
字段设置文件,然后保存模型。我相信我是那里的一部分,因为图像在保存时上传到我的媒体目录,但是我想我错过了更新其他东西,因为它实际上并没有更新模型。
任何建议都很棒!谢谢。
在这里找到答案:
下面的工作代码:
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')