IntegrityError at /authentication/addProfilePic/ UNIQUE constraint failed: authentication_userprofile.user_id
Я работаю с проектом блога, где пытаюсь добавить фотографию профиля пользователя. Всякий раз, когда я отправляю фотографию, он выдает мне UNIQUE constraint failed:authentication_userprofile.user_id.
views.py
from .forms import ProfilePic
def add_pro_pic(request):
form= ProfilePic()
if request.method=='POST':
form=ProfilePic(request.POST,request.FILES)
if form.is_valid:
user_obj=form.save(commit=False)
user_obj.user=request.user
user_obj.save()
return redirect('profile')
return render(request,'profilePic.html',{'form':form})
models.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user=models.OneToOneField(User,related_name='user_profile',on_delete=models.CASCADE)
profile_pic=models.ImageField(upload_to='profile_pics')
forms.py
from. models import UserProfile
from django import forms
class ProfilePic(forms.ModelForm):
class Meta:
model=UserProfile
fields=['profile_pic']
здесь идет profilePic.html
{% extends 'base.html' %}
{% block content %}
<h2>Add Profile Pic</h2>
<form method="POST" enctype="multipart/form-data">
{{form.as_p}}
{% csrf_token %}
<button type="submit" name='button' class="btn btn-success btn-sm">Add</button>
{% endblock %}
Но сервер показывает мне, что ограничение UNIQUE не удалось: authentication_userprofile.user_id
IntegrityError at /authentication/addProfilePic/
UNIQUE constraint failed: authentication_userprofile.user_id
Request Method: POST
Request URL: http://localhost:8000/authentication/addProfilePic/
Django Version: 3.2.8
Exception Type: IntegrityError
Exception Value:
UNIQUE constraint failed: authentication_userprofile.user_id
Exception Location: C:\Users\ITS\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\sqlite3\base.py, line 423, in execute
Python Executable: C:\Users\ITS\AppData\Local\Programs\Python\Python39\python.exe
Python Version: 3.9.0
Python Path:
['C:\\Users\\ITS\\Desktop\\blog_project\\blogproject',
'C:\\Users\\ITS\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
'C:\\Users\\ITS\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
'C:\\Users\\ITS\\AppData\\Local\\Programs\\Python\\Python39\\lib',
'C:\\Users\\ITS\\AppData\\Local\\Programs\\Python\\Python39',
'C:\\Users\\ITS\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages']
Server time: Tue, 14 Dec 2021 19:40:04 +0000
где проблема? Спасибо заранее.
Это происходит потому, что я пытался разместить изображение для пользователя, у которого уже есть фотография профиля. И я пытался добавить картинку профиля, не удаляя предыдущую. Я установил пакет django-cleanup, чтобы каждый раз, когда пользователь меняет свою фотографию профиля, удалять существующую. Создайте нового пользователя и установите django-cleanup. в командной строке
pip install django-cleanup
Перейдите к файлу settings.py и
INSTALLED_APPS = [
'django_cleanup.apps.CleanupConfig',
]
добавьте этот код. Добавьте картинку профиля и измените ее по своему усмотрению.