Django форма профиля не попадает в базу данных - PullRequest
0 голосов
/ 24 января 2020

Я запускаю приложение Django.

views.py:

@user_passes_test(lambda u: u.is_anonymous)
def signup(request):
 if request.method=='POST':
    user_form = UserForm(data=request.POST)
    profile_form = ProfileForm(data=request.POST)
    if user_form.is_valid() and profile_form.is_valid():
        user = user_form.save()
        user.set_password(user.password)
        user.save()
        profile = profile_form.save(commit=False)
        profile.user=user
        response = {'status':'success','message':'Registered Successfully'}
        return JsonResponse(response,safe=False)

    elif user_form.errors:
        ress = {'status':'Failed','message':'Username already Exists'}
        return JsonResponse(ress,safe=False)
    elif profile_form.errors:
        resss = {'status':'Failed','message':'mobile number already Exists'}
        return JsonResponse(resss,safe=False)

forms.py:

class UserForm(forms.ModelForm):
    username=forms.CharField(widget=forms.PasswordInput)
    password=forms.CharField(widget=forms.PasswordInput)
    class Meta():
       model=User
       fields=('username','password')

class ProfileForm(forms.ModelForm):
    class Meta:
       model=Profile
       widgets = {
        'address_line_1': forms.TextInput(attrs={'placeholder': 'Door No,Building'}),
        'address_line_2': forms.TextInput(attrs={'placeholder': 'Area,Locality'}),
    }
       fields=('first_name','last_name','mobile_no','email','address_line_1','address_line_2','postal_code','city','country')

user_form входит в базу данных, но profile_form не попадает в базу данных. Если я регистрируюсь с тем же mobile_no 2 раза, он показывает сообщение «Зарегистрировался успешно».

1 Ответ

1 голос
/ 24 января 2020

Вы не звоните save(...) метод

# Your code
...
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
<b>profile.save() # saving profile</b>
... 
# your code
...