gpt4 book ai didi

django - 如何使用 ModelForm 替换图像?

转载 作者:行者123 更新时间:2023-12-04 07:00:41 24 4
gpt4 key购买 nike

我有一个用户配置文件模型,其中包含他们的“面部照片”图像。我正在使用 modelForm 来呈现配置文件更新表单。构建一个工作表单很容易,但现在我需要对图像进行一些调整:

1) 以用户提供的文件名保存;我宁愿指定要使用的文件名。我以为我只使用模型的 PK 和相同的文件扩展名,例如:“443.jpg”

2)它应该替换现有的图像,而不是附加下划线。 “443___.jpg”。

class Member(models.Model):
home_phone = models.CharField(max_length=10, blank=True)
image = models.ImageField(upload_to='members', default="default.png")
...

class MemberProfileForm(forms.ModelForm):
home_phone = AUPhoneNumberField(required=False)

class Meta:
model = Member
exclude = ('email','password','create_date','last_login','is_active')

我希望这样的事情就足够了:
    form = MemberProfileForm(request.POST, request.FILES, instance=request.member)
if form.is_valid():
if request.FILES.get("image"):
form.image.name = 'poobar.jpg'
form.save()
return HttpResponseRedirect(reverse('my-profile'))

但是模型形式中不存在“图像”(AttributeError)

我是否需要重新设计整个内容以使用“form”而不是“modelform”来进行这些小调整,还是有一种简单的方法来控制图像的保存?

X - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------------

这似乎解决了它......
    form = MemberProfileForm(request.POST, request.FILES, instance=request.member)
if form.is_valid():
if form.cleaned_data['image']:
(path, extension) = os.path.splitext(form.cleaned_data['image'].name)
form.cleaned_data['image'].name = ('%s%s' % (request.member.id, extension))
request.member.image.delete()
form.save()

...除了大多数人可能想要'request.user',我有'request.member'。

最佳答案

有一套不错的documentation在官方 django 网站上关于如何处理文件上传和修改它们的位置。这应该可以回答您关于处理文件上传位置的问题。

关于不属于表单的图像,它位于cleaned_data 字典中。您会在 form.cleaned_data['image'] 找到它.

关于django - 如何使用 ModelForm 替换图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1898613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com