мои данные модели регистра не сохраняются в БД, когда я пытаюсь создать нового пользователя. Кроме того, studentID не выдает никакой ошибки с помощью AutoField, но с IntegerField выдает «Сбой уникального ограничения: user_profile.user»
- вот мой model.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
StudentID = models.IntegerField(primary_key=True, verbose_name='SID')
Branch = models.CharField(max_length=255, choices=Departments, default="CSE")
YearOfStudy = models.IntegerField(default=1)
ContactNumber = PhoneField(help_text='Contact phone number')
image = models.ImageField(default='default.jpeg', upload_to='profile_pics', blank=True)
parentsContactNumber = PhoneField(help_text="Parent's phone number", blank=True)
def __str__(self):
return self.Branch
def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
forms.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
first_name = forms.CharField()
last_name = forms.CharField()
class Meta:
model = User
fields = ['username', 'email', 'first_name', 'last_name', 'password1', 'password2']
class ProfileCreationForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['StudentID', 'Branch', 'YearOfStudy', 'ContactNumber']
views.py
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
form1 = ProfileCreationForm(request.POST, request.FILES)
if form.is_valid() and form1.is_valid():
StudentID = form.cleaned_data.get('StudentID')
username = form.cleaned_data.get('username')
user_instance = form.save()
profile_instance = form1.save(commit=False)
profile_instance.user = user_instance
profile_instance.save()
form1.save(commit=True)
return redirect('login')
else:
form = UserRegisterForm()
form1 = ProfileCreationForm()
context = {
'form': form,
'form1': form1
}
return render(request, 'user/register.html', context)
в этом коде, если я пишу свой файл views.py таким образом, я получаю ту же ошибку views.py
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
form1 = ProfileCreationForm(request.POST, request.FILES)
if form.is_valid() and form1.is_valid():
form.save()
form1.save()
return redirect('login')
else:
form = UserRegisterForm()
form1 = ProfileCreationForm()
context = {
'form': form,
'form1': form1
}
return render(request, 'user/register.html', context)