【发布时间】:2022-01-19 19:55:14
【问题描述】:
我想设置用户个人资料图片,但不想在每次更改图片时都添加新文件有没有办法覆盖或替换 cloudinary 数据库中的图片 这是模型:
class CloudinaryField(BaseCloudinaryField):
def upload_options(self, model_instance):
return {
'public_id': UserProfile.user.username,
'filename': "Hey",
'unique_filename': False,
'overwrite': False,
'resource_type': 'image',
'tags': ['Profile'],
'invalidate': True,
'quality': 'auto:eco',
}
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
date_created = models.DateTimeField(auto_now_add=True)
Nick_Name = models.CharField(default="Hey", max_length=250)
Profile_pic = CloudinaryField('Profile_Pic', default="")
表格:
class UserProfilePage(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['Nick_Name', 'Profile_pic']
help_texts = {
'Nick_Name': 'This will act as your display name',
}
Profile_pic = CloudinaryFileField(
options={
'folder': 'Profile/',
})
最后是意见:
def edit(request):
func = data(request)
form = UserEdit(initial={'email': request.user.email})
profile = UserProfilePage(initial={'Nick_Name': request.user.userprofile.Nick_Name,
'Profile_pic': request.user.userprofile.Profile_pic.url})
if request.method == "POST":
form = UserEdit(data=request.POST or None, instance=request.user)
profile = UserProfilePage(data=request.POST or None, instance=request.user.userprofile, files=request.FILES)
if form.is_valid() and profile.is_valid():
user = form.save()
profiles = profile.save()
return redirect("Profile_Page")
ctx = {
'form': form,
'profile': profile,
'url': func[0],
'name': func[1],
'date': func[2],
}
return render(request, "Edit_User.html", ctx)
如果需要更多代码,请发表评论,我一定会将其编辑到问题中 非常感谢
【问题讨论】:
标签: python django django-models django-views cloudinary