前提・実現したいこと
python(Django)で出席管理アプリを作っていて、現在教師のpassword登録画面を作成している段階です。
passwordが登録されるデータベースは以下の画像のようになっていてpassword以外のデータは既に登録されています。
ブラウザでTeacher idとpasswordを打ち込むとTeacher idと一致するレコードのpasswordのフィールドに値が保存されるという仕組みにしようとしています。
発生している問題・エラーメッセージ
ブラウザ上でTeacher idとpasswordを打ち込んで実行してみるとブラウザ上では問題なく「登録が完了しました」と表示されるのですが、Django管理サイトの該当するレコードのpasswordには値が入っていません。
どうすれば値を追加できるのか教えて頂きたいです。
該当のソースコード
views.py
python
1from django.shortcuts import render 2from django.db import IntegrityError 3from django.contrib.auth import authenticate, login 4from .models import Teacher 5 6def signupfunc(request): 7 if request.method == "POST": 8 9 id = request.POST['teacher_id'] 10 pw = request.POST['password'] 11 12 if Teacher.objects.filter(teacher_id = id).exists(): #入力された教師idがDBに存在するか条件づけ,していたらidを取得し変数に代入 13 teacher = Teacher.objects.filter(teacher_id = id) 14 teacher.password = pw 15 teacher.bulk_update(teacher, ["password"]) 16 return render(request, 'signup.html',{'context':'登録が完了しました.'}) 17 else: 18 return render(request, 'signup.html', {'error':'このユーザーはすでに登録されています.'}) 19 20 return render(request, 'signup.html', )
models.py
python
1from django.db import models 2 3class Teacher(models.Model): 4 subject_id = models.CharField(max_length=10) 5 subject_name = models.CharField(max_length=128) 6 teacher_id = models.CharField(max_length=10) 7 teacher_name = models.CharField(max_length=20) 8 start_time = models.TimeField(null=True) 9 finish_time = models.TimeField(null=True) 10 attend_time = models.IntegerField(null=True) 11 late_time = models.IntegerField(null=True) 12 password = models.CharField(max_length=128)
signup.html
HTML
1<!DOCTYPE html> 2{% extends 'base.html' %} 3 4{% block content %} 5<body> 6 <form method="POST">{% csrf_token %} 7 {{ error }} 8 {{ context }} 9 <h1 class="h3 mb-3 fw-normal">Please sign in</h1> 10 <div class="form-floating"> 11 <label for="floatingInput">教員ID</label> 12 <input type="teacher_id" class="form-control" id="floatingname" name="teacher_id" placeholder="例)P000"> 13 </div> 14 <div class="form-floating"> 15 <label for="floatingPassword">パスワード</label> 16 <input type="password" class="form-control" id="floatingPassword" name="password" placeholder="Password"> 17 </div> 18 <button class="w-100 btn btn-lg btn-primary" type="submit">Sign in</button> 19 20 </form> 21</body> 22{% endblock content %}
補足情報(FW/ツールのバージョンなど)
database(sqlite)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/11 06:14