2016-09-22 7 views
2

Я создаю пользовательские модели для регистрационной формы в django, но у меня возникают некоторые проблемы с получением данных в базе данных. В настоящее время пользователи могут зарегистрироваться, и их имя пользователя, пароль, адрес электронной почты, имя и фамилия сохраняются, но все остальные данные формы не сохраняются в объекте. Ниже приведены мои формы и выход:Используя регистрационную форму для добавления в пользовательские поля (django)

Models.py

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    gender = models.CharField(max_length=20) 
    medication = models.CharField(max_length=50, blank=True) 
    medical_history = models.CharField(max_length=50,blank=True) 
    DOB = models.CharField(max_length=20) 
    telephone = models.CharField(max_length=20) 
    address = models.CharField(max_length=30) 
    city = models.CharField(max_length=20) 
    state = models.CharField(max_length=20) 
    postcode = models.CharField(max_length=30) 

forms.py:

class CreateAccountForm(ModelForm): 
    class Meta: 
     model = Profile 
     fields = ("username","password","password2","first_name","last_name", 
        "gender","medication","medical_history","DOB","email","telephone", 
        "address","city","state","postcode") 

views.py:

def create_account(request): 
    form = CreateAccountForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     password2 = form.cleaned_data['password2'] 
     first_name = form.cleaned_data['first_name'] 
     last_name = form.cleaned_data['last_name'] 
     gender = form.cleaned_data['gender'] 
     medication = form.cleaned_data['medication'] 
     medical_history = form.cleaned_data['medical_history'] 
     DOB = form.cleaned_data['DOB'] 
     email = form.cleaned_data['email'] 
     telephone = form.cleaned_data['telephone'] 
     address = form.cleaned_data['address'] 
     city = form.cleaned_data['city'] 
     state = form.cleaned_data['state'] 
     postcode = form.cleaned_data['postcode'] 
     if password == password2: 
      if (password_verification(password)) == 3: 
       if (username_verification(username)) == False: 
        form.save() 
        return HttpResponseRedirect('/login') 
       else: 
        return HttpResponseRedirect('/create_account') 
      else: 
       return HttpResponseRedirect('/create_account') 
     else: 
      return HttpResponseRedirect('/create_account') 
    return render(request, "create_account.html", {'form': form}) 

В окне Джанго администратора, пользователь регистрируется в базе данных с полями create_user, но ни один из добавленных настраиваемых полей не сохраняет в доступной колонке нс. Любая помощь была бы замечательной, это действительно подшучивало. Ниже изображен пустые поля, ура!

ответ

2

Вы спасаете пользователя только user.save() чтобы другие Profile (пожалуйста, измените user таблицу на что-то значимое Profile.

А также вам не нужно passwordlast_namefirst_nameemail в вашем профиле, а также.

И я предложу использовать ModelForm для сохранения таблицы профилей.

user_form = CreateAccountForm(request.POST) 
profile_form = ProfileForm(request.POST)  

if user_form.is_valid() and profile_form.is_valid(): 
    # save the form after your password check 
    user_form.save() 
    profile_form.save() 
+0

Я изменил название модели на профиль, благодарю вас за предложение. Будет ли form.save() идти в файле представлений? – Abjilla22

+0

да ... подождите, я немного поменяю свой ответ, чтобы вы лучше поняли ... –

+0

@ Abjilla22, пожалуйста, см. Мой обновленный ответ –