Django Обновление AbstractUser
IntegrityError at /
NOT NULL constraint failed: pages_profile.username
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 3.2.9
Exception Type: IntegrityError
Exception Value:
NOT NULL constraint failed: pages_profile.username
Как обновить абстрактного пользователя, который уже вошел в систему?
from django.shortcuts import redirect, render
from .forms import UserProfileForm
from .models import Profile
def index(request):
context = {}
if request.method == "POST":
print(request.POST)
form = UserProfileForm(request.POST, request.FILES)
if form.is_valid():
img = form.cleaned_data.get("avatar")
obj, created = Profile.objects.update_or_create(
username=form.cleaned_data.get('username'),
defaults={'avatar': img},
)
obj.save()
print(obj)
return redirect(request, "home.html", obj)
else:
form = UserProfileForm()
context['form']= form
return render(request, "home.html", context)
from django.shortcuts import redirect, render
from .forms import UserProfileForm
from .models import Profile
def index(request):
context = {}
if request.method == "POST":
print(request.POST)
form = UserProfileForm(request.POST or None, request.FILES or None,instance=request.user)
if form.is_valid():
"""
img = form.cleaned_data.get("avatar")
print(img)
print(form.cleaned_data.get('username'))
print(request.user)
obj, created = Profile.objects.update_or_create(
username=form.cleaned_data.get('username'),
defaults={'avatar': img},
)
obj.save()
print(obj)
"""
form.save()
return redirect('home')
else:
form = UserProfileForm(instance=request.user)
context['form']= form
return render(request, "home.html", context)
Я поменял его на этот, и он просто работает, но он еще не удаляет старую фотографию в ведре s3. Нужен был instance=request.user.