【问题标题】:Django profile form not hitting the databaseDjango 配置文件表单未命中数据库
【发布时间】:2020-01-24 06:25:01
【问题描述】:

我正在运行一个 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 次,则显示“注册成功”消息。

【问题讨论】:

    标签: python json django django-forms


    【解决方案1】:

    你没有调用 save(...) 方法

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

    【讨论】:

    • 感谢已修复。首先我在 profile.user 之前调用了 save(),所以我得到了错误。
    • 考虑接受答案。 :)
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2021-10-07
    • 1970-01-01
    • 2013-02-05
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多