IntegrityError at /profile/
(1062, "Duplicate entry '1' for key 'catalog_profile.user_id'")
The image is saved to the server (giving an error along the way), but is not written to the database,
before that error i had problem with user_id in tho.save()
what i must to change ?
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 (where I have problem) tho.save give me an error
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})