在 DJango 表单中手动添加字段

Adding Field Manually in DJango Form

我正在 django 中制作一个登录注册系统,我希望我的表单数据保存在内置的“用户”table 和我定制的“编码器”table一起。我的表单有 6-7 个字段,我想将其插入自定义“编码器”table。但我只想在“用户”table 中插入“用户名”和“密码”。我不知道如何将“用户名”和“密码”与“表单”分开。这是我的代码

def f1(request):
    form = codersform()
    form2 = User()
    if request.method == 'POST':
        form = codersform(request.POST)
        if form.is_valid:
            form.save()
            form2 = coders.objects.filter('name', 'pasw')#Getting Error
            form2.save()#in these two part
            user = form.cleaned_data.get('name')
            messages.success(
                request, "Account Created Successfully For " + user)
            return redirect('login')
        else:
            messages.error(request, "Please Fill Out All Fields Correctly")
    return render(request, 'signup.html', {'form': form})

表单代码

<form action="" method="POST"  class="register-form" id="register-form">
                            {% csrf_token %}
                            <div class="form-group">
                                <label for="name"><i class="zmdi zmdi-account material-icons-name"></i></label>
                                {{form.name}}
                                                                       
                            </div>
                            <div class="form-group">
                                <label for="matid"><i class="zmdi zmdi-account-box"></i></label>
                                {{form.matid}}
                                
                            </div>
                            <div class="form-group">
                                <label for="phone"><i class="zmdi zmdi-phone"></i></label>
                                {{form.phone}}
                            </div>
                            <div class="form-group">
                                <label for="Semester"><i class="zmdi zmdi-star"></i></label>
                                {{form.semester}}
                            </div>
                            <div class="form-group">
                                <label for="Cf"><i class="zmdi zmdi-code"></i></label>
                                {{form.Cf}}
                            </div>
                            <div class="form-group">
                                <label for="email"><i class="zmdi zmdi-email"></i></label>
                                {{form.email}}
                            </div>
                            <div class="form-group">
                                <label for="pass"><i class="zmdi zmdi-lock"></i></label>
                                {{form.pasw}}
                            </div>
                            <div class="form-group">
                                <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                                <label for="agree-term" class="label-agree-term"><span><span></span></span>I agree all statements in  <a href="#" class="term-service">Terms of service</a></label>
                            </div>
                            <div class="form-group form-button">
                                <input type="submit" name="signup" id="signup" class="form-submit" value="Register"/>
                            </div>
                        </form>

谢谢:)

我在表单字段中看不到用户名字段,也许您使用 name 作为用户名..

要创建用户对象,您需要提供用户对象的所有必填字段

试试这个修改后的代码:

def f1(request):
form = codersform()
if request.method == 'POST':
    form = codersform(request.POST)
    if form.is_valid:
        form.save()   
        User.objects.create(username=form.cleaned_data['name'],password=form.cleaned_data['pasw']
            messages.success(
                request, "Account Created Successfully For " + user)
            return redirect('login')
    else:
        messages.error(request, "Please Fill Out All Fields Correctly")
        return render(request, 'signup.html', {'form': form})