Я пытаюсь обновить профиль путем обрезки изображения, после обрезки изображения оно дает мне строку base64, которую я должен преобразовать в изображение и сохранить на сервере, а также его URL в базе данных.Я получаю изображение на сервере, но не могу сохранить его URL в базе данных.
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.FileField(default='default.jpg',
upload_to='profile_pics')
def __str__(self):
return self.user.username
def save(self, *args, **kwargs):
#super(Profile, self).save(*args, **kwargs)
super().save()
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300,300)
img.thumbnail(output_size)
img.save(self.image.path)
forms.py
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
просмотров.py
#profile view
@login_required
def profile(request):
#if any changes POST data
if request.method == 'POST':
image_data = request.POST['image']
format12,img = image_data.split(';base64,')
ext = format12.split('/')[-1]
imageObj = ContentFile(base64.b64decode(img+"=="))
file_name = "myphoto."+ext
#print(file_name)
#Profile.image = data
#Profile.save(file_name, data, save=True)
#Profile.save()
profile = Profile()
#profile.user_id = request.user.id
#profile.image= imageObj
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST, request.FILES,instance=request.user.profile)
#check if both forms are valid
if u_form.is_valid() and p_form.is_valid():
u_form.save() # if yes Save
profile.image.save(file_name, imageObj)
profile.save()
#p_form.save() # if yes save
messages.success(request, format('Your Profile has been updated.'))
return redirect('profile')
else:
u_form = UserUpdateForm(instance=request.user)#instance will show previous data in forms
p_form = ProfileUpdateForm()#instance will show previous data in forms
# Send form data to the template
context = {
'u_form': u_form,
'p_form': p_form,
}
return render(request, 'users/profile.html', context)
Я получаю сообщение об ошибке:
django.db.utils.IntegrityError: (1062, "Duplicate entry '2' for key 'user_id'")
Кто-нибудь, кто может помочь мне в этом?