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',
]

добавьте этот код. Добавьте картинку профиля и измените ее по своему усмотрению.

Вернуться на верх