获取下拉列表id并保存到视图.py使用python djang的文件

2024-04-16 21:13:39 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的型号.py文件

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()

这是我的表单.py文件

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')

这是我的视图.py文件

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,})

但我面临着一个错误:

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)")


Tags: 文件pyformtruenumbersqlservermodels