我写了一个处理文件和URL上传的图片上传表单。这是一个模型表单,它向数据库提交未发布的图像。
class UnpublishedImage(Model(20)):
picture = ImageField(help_text=_('Unpublished picture'), upload_to=settings.UNPUBLISHED_PICTURE_UPLOAD_TO)
该模型(20)为每个模型提供一个pid字段(20个随机slug字符),我将其用作模型的公共ID。
未发布的图片工作正常,但现在我想使用它们,也就是说,我想发布它们。
class Look(Model(20)):
user = OneToOneField(get_user_model(), editable=False)
title = CharField(max_length=40)
description = TextField(max_length=160)
#image = OneToOneField(UnpublishedImage)
为清楚起见,它分两步进行:
现在,我无法将OneToOneField用于UnpublishedImage模型,因为我想在图像发布后立即从未发布的表(和存储)中删除它。你怎么建议这样做?
我尝试过ImageField,但我不知道如何将图像提供给表单。
请注意,还有第三种用于检索未发布图像的表单,因此您可以使用它。
class UnpublishedImagePublishForm(Form):
image = CharField()
def clean_image(self):
# Get the unpublished object
try:
unpublished = UnpublishedImage.objects.get(pid=self.cleaned_data['image'])
except UnpublishedImage.DoesNotExist:
raise ValidationError(_("Image not found"))
return unpublished
这样我就能得到图像:
# Get the unpublished image
unpublished = UnpublishedImagePublishForm(request.DATA)
if not unpublished.is_valid():
return Response(unpublished.errors, status=HTTP_422_UNPROCESSABLE_ENTITY)
# Get the unpublished image instance
image = unpublished.cleaned_data['image']
提前致谢。