我正在尝试将类似“用户个人资料”的内容添加到现有的django网站。我有两个麻烦。其中之一是我必须在注册页面中显示一个multiplecheckbox,并且必须将所选数据添加到selected_features属性。但是我找不到适合的数据类型,并且总是遇到不同的错误。第二个是我有一个错误: “唯一性约束失败:auth_user.username” 当我使用ForeignKey时,我也遇到了错误。
这是模型
class UserAttribute(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
company = models.CharField(max_length=50)
selected_features = models.CharField(validators=[validate_comma_separated_integer_list], max_length=15, null=True)
这是表格
class RegisterForm(forms.Form):
first_name = forms.CharField(max_length=50,label="İsim")
last_name = forms.CharField(max_length=50,label="Soyisim")
username = forms.CharField(max_length=50,label="Kullanıcı Adı")
company = forms.CharField(max_length=50,label="Şirket İsmi")
email = forms.EmailField(max_length=50,label="E-mail Adresi")
phone = forms.CharField(max_length=50,label="Telefon")
password = forms.CharField(max_length=20,label="Parola", widget =forms.PasswordInput)
confirm = forms.CharField(max_length=20,label="Parolayı Doğrula", widget =forms.PasswordInput)
features = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
choices=FEATURES, label="Modelinizde Kullanmak İstediğiniz Özellikleri Seçiniz:")
def clean(self):
first_name = self.cleaned_data.get("first_name")
last_name = self.cleaned_data.get("last_name")
username = self.cleaned_data.get("username")
company = self.cleaned_data.get("company")
email = self.cleaned_data.get("email")
phone = self.cleaned_data.get("phone")
password = self.cleaned_data.get("password")
confirm = self.cleaned_data.get("confirm")
feature = self.cleaned_data.get("features")
if password and confirm and password !=confirm:
raise forms.ValidationError("Parolalar Eşleşmiyor")
values = {
"username" : username,
"password" : password,
"first_name" : first_name,
"last_name" : last_name,
"company" : company,
"email" : email,
"phone" : phone,
"feature": feature
}
return values
和视图
def register(request):
form = RegisterForm(request.POST or None)
if form.is_valid():
first_name = form.cleaned_data.get("first_name")
last_name = form.cleaned_data.get("last_name")
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
email = form.cleaned_data.get("email")
phone = form.cleaned_data.get("phone")
newUser = User(username =username)
newUser.set_password(password)
newUser.first_name = first_name
newUser.last_name = last_name
newUser.email = email
newUser.phone = phone
user_profile = UserAttribute(user=newUser, company=form.cleaned_data.get("company"), selected_features=request.GET.getlist("feature"))
newUser.save()
user_profile.save()
login(request,newUser)
messages.success(request,"Başarıyla Kayıt Oldunuz...")
return redirect("index")
context = {
"form" : form
}
return render(request,"register.html",context)