Проблема с ImageForm. не удается сохранить его на сервере Django

IntegrityError at /profile/ (1062, "Дублирующая запись '1' для ключа 'catalog_profile.user_id'")

Изображение сохраняется на сервере (выдавая по пути ошибку), но не записывается в базу данных, до этой ошибки у меня была проблема с user_id в tho.save(). что я должен изменить?

models.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver



class Clan(models.Model):
    clan_name = models.CharField(max_length=40)
    clan_tag = models.CharField(max_length=5)
    clan_exp = models.IntegerField(default=0)


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    kills = models.IntegerField(default=0)
    exp = models.IntegerField(default=0)
    tokens = models.IntegerField(default=0)
    coins = models.IntegerField(default=0)
    chanks = models.IntegerField(default=0)
    privilege = models.CharField(max_length=15)
    clan = models.ForeignKey(Clan, blank=True, null=True, on_delete=models.SET_NULL)
    skin = models.ImageField(default='default.png', null=True)


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

forms.py

from django import forms
from.models import Profile, User


class SkinForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('skin',)
        labels = {'skin': '',}
        #exclude = ('user',)
        widgets = {
            'skin': forms.FileInput(attrs={'class': 'file_input', 'placeholder': ''}),
        }

views.py (где у меня проблема) tho.save дает мне ошибку

def profile(request):
    if request.method == "POST":
        form = SkinForm(request.POST, request.FILES)
        u = request.FILES['skin']
        if form.is_valid():
            tho = form.save(commit=False)
            tho.user = request.user.profile.user
            tho.save()
            return render(request, 'profile.html', context={'skin': skin, 'form': SkinForm})
        else:
            return render(request, 'profile.html', context={'skin': skin, 'form': SkinForm, 'code': 1})
    return render(request, 'profile.html', context={'skin': skin, 'form': SkinForm})

Я вижу вашу html-форму? Вам нужно добавить атрибут enctype = multipart/form-data

<form method="post" action="#" enctype="multipart/form-data">

{{форма }}

Если не добавить атрибут enctype, форма будет пустой

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