This is my models.py file
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
join_date = models.DateField(default=datetime.today())
end_date = models.DateField(default=datetime.today() + timedelta(days=7))
package_status = models.BooleanField(default=True,blank=True)
phone_number = models.CharField(max_length=30, blank=True)
idboard= models.CharField(max_length=30, blank=True)
@receiver(post_save, sender=User) def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
This is my forms.py file
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
phone_number = forms.CharField(help_text='Required. Format: 03001234567')
idboard = forms.ModelChoiceField(queryset=Board_TB.objects.filter(pk__in=b[1,2]),required=False)
class Meta:
model = User
fields = ('username', 'email','password1', 'password2','phone_number','idboard')
This is my views.py file
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.phone_number = form.cleaned_data.get('phone_number')
user.profile.idboard = form.cleaned_data.get('idboard')
user.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return redirect('index')
else:
form = SignUpForm()
return render(request, 'accounts/signup.html',{'form' : form,})
But I am facing this error:
IntegrityError at /accounts/signup/ ('23000', "[23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot insert the value NULL into column 'idboard', table 'edxlinkdb.dbo.accounts_profile'; column does not allow nulls. UPDATE fails. (515) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]The statement has been terminated. (3621)")