Я использую Django и в моей строке файла views.py 11: user = form.save () приводит к ошибке UNIQUE: ошибка auth_user.username - PullRequest
0 голосов
/ 14 марта 2020

Я посмотрел на заданные вопросы, но не могу понять, что мне не хватает. Когда я пытаюсь проверить свою страницу регистрации, она выбрасывает ограничение UNIQUE. Я знаю, что это имеет некоторое отношение к form.save () в моих представлениях. В другом решении вопросов говорилось, что они пытались сохранить форму дважды. Я уверен, что не делаю этого, но я могу ошибаться.

Views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm, bUserRegisterForm, UserProfileForm

from django.contrib.auth import authenticate, login, logout

def studentreg(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form .is_valid():
            form.save()
            first_name = form.cleaned_data.get('first_name')
            messages.success(request, f'account created for {first_name}!')
            return redirect ('/home/studentlogin.html')
    else:
        form = UserRegisterForm() #this will return an empty form
    return render(request, 'users/studentregisterform.html', {'form': form})

def getstarted(request):
    return render(request, 'home/getstarted.html')

def chooseaccount(request):
    return render(request, 'home/chooseaccount.html')

def businessreg(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        profile_form = UserProfileForm(request.POST)

        if form .is_valid () and profile_form.is_valid():
            user = form.save()

            profile = profile_form.save(commit=False)
            profile.user = user

            profile.save()
            first_name = form.cleaned_data.get('first_name')
            messages.success(request, f'account created for {first_name}!')
            return redirect ('admin/')
    else:
        form = bUserRegisterForm()
        profile_form = UserProfileForm()
    return render(request, 'users/businessregisterform.html', {'form': form, 'profile_form' : profile_form})

def bloginpage(request):

    if request.method == 'POST':
        Email_Address = request.POST.get('Email_Address')
        password = request.POST.get('Password')

        user = authenticate(request, Email_Address = email, Password = password)

        if user is not None:
            login(request, Email_Address)
            return redirect('')

    context = {}
    return render(request, 'home/studentlogin.html', context)

Models.py

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    company_name = models.CharField(max_length=50)

    def __str__(self):
        return self.user.email

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import UserProfile


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['email', 'first_name', 'last_name', 'password1', 'password2']

class bUserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['email', 'first_name', 'last_name', 'password1', 'password2']

class UserProfileForm(forms.ModelForm):

    class Meta:
        model = UserProfile
        fields = ('company_name',)

Любая помощь будет оценена. Я все еще учусь и хотел бы понять, что я делаю неправильно, поэтому я буду лучше понимать вещи в будущем

...