Django createView return UNIQUE constraint failed: answer_profile.user_id when i submited form
Я пытаюсь добавить профиль пользователя для пользователей на моем сайте, когда они завершают создание формы регистрации пользователя, она перенаправляет пользователя в модель Profile, где он создает профиль для своей учетной записи. Я успешно создал форму регистрации пользователя и она работает нормально, но когда форма отправлена и перенаправляет нового пользователя в модель Profile, где я использую CreateView, форма выбрасывает ошибку, когда я отправил форму.
ошибка:
IntegrityError at /CreateProfile/
UNIQUE constraint failed: answer_profile.user_id
Есть ли способ создать пользовательский профиль пользователя для всех новых пользователей, когда они создают учетную запись в моем приложении. Например, Stack Overflow. Когда пользователь создает аккаунт с помощью Github, Facebook или Gmail, Stack Overflow создает пользовательский профиль пользователя, который вы можете редактировать. Я успешно создал профиль для редактирования.
мои взгляды:
class CreateProfile(CreateView):
model = Profile
fields = ['profile_image', 'stories', 'website', 'twitter', 'location']
template_name = 'create.html'
success_url = reverse_lazy('index')
def form_valid(self, form):
form.instance.user = self.request.user
return super (CreateProfile, self).form_valid(form)
def register(request):
if request.method == 'POST':
username = request.POST['username']
first_name = request.POST['first_name']
last_name = request.POST['last_name']
email = request.POST['email']
password = request.POST['password']
password2 = request.POST['password2']
if password == password2:
if User.objects.filter(email=email).exists():
messages.info(request, 'Email or user name Already taking')
return redirect('register')
elif User.objects.filter(username=username).exists():
messages.info(request, 'username is taken')
return redirect('register')
else:
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name, email=email, password=password)
user.save();
return redirect('Create')
else:
messages.info(request, 'Password Not Match')
return redirect('register')
return redirect ('/')
else:
return render(request, 'signup.html')
моя модель:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(upload_to='avatar', blank=True, null=True)
stories = RichTextField(blank=True, null=True)
twitter = models.URLField(max_length=300, blank=True, null=True)
website = models.URLField(max_length=300,blank=True, null=True)
city = models.CharField(max_length=50, blank=True, null=True)
location = models.CharField(max_length=80, blank=True, null=True)
slug = models.SlugField(unique=True, max_length=200)
def save(self, *args, **kwargs):
self.slug = slugify(self.user)
super(Profile, self).save(*args, **kwargs)
def __str__(self):
return str(self.user)