TypeError at /studentform Поле 'prn_no' ожидало число, но получило ('1',)
У меня возникла проблема здесь....so Я создал базу данных MySql и связал ее с фреймворком Django, мой сайт под названием "Система управления школой" имеет 5 таблиц и все они работают безупречно, будь то получение данных от пользователя через формы Django и сохранение их в базе данных mysql или наоборот, но таблица студентов и преподавателей возвращает ту же ошибку, как указано ниже :
TypeError at /studentform Field 'prn_no' expected a number but got ('1',).
Я не понимаю, что приводит к этой ошибке. Отдыхайте все
Я попробовал удалить всю мою миграцию Django и создать ее снова.
python manage.py makemigration
python manage.py migration
Но все та же ошибка.
Ниже приведены некоторые фрагменты моего кода:
studentform.html
{% extends 'base.html' %}
{% block title %}Student{% endblock title %}
{% block body %}
<div class="container">
<br>
<form class="row g-3" method="post" action="/studentform">
{% csrf_token %}
<div class="col-md-4">
<label for="prn_no" class="form-label">prn_no</label>
<input type="number" class="form-control" id="prn_no" name="prn_no" required>
</div>
<div class="col-md-4">
<label for="fname" class="form-label">fname</label>
<input type="text" class="form-control" id="fname" name="fname" required>
</div>
<div class="col-md-4">
<label for="lname" class="form-label">lname</label>
<input type="text" class="form-control" id="lname" name="lname" required>
</div>
<div class="col-md-4">
<label for="DOB" class="form-label">DOB</label>
<input type="date" class="form-control" id="DOB" name="DOB" required>
</div>
<div class="col-md-4">
<label for="Address" class="form-label">Address</label>
<input type="text" class="form-control" id="Address" name="Address" required>
</div>
<div class="col-md-3">
<label for="gender" class="form-label">gender</label>
<select class="form-select" id="gender" name="gender" required>
<option selected disabled value="">Choose...</option>
<option>M</option>
<option>F</option>
<option>O</option>
</select>
</div>
<div class="col-md-4">
<label for="Standard" class="form-label">Standard</label>
<input type="text" class="form-control" id="Standard" name="Standard" required>
</div>
<div class="col-md-6">
<label for="guardian_id" class="form-label">guardian_id</label>
<input type="text" class="form-control" id="guardian_id" name="guardian_id" required>
</div>
<br>
<div class="col-12">
<button class="btn btn-primary" type="submit" >Submit Data</button>
</div>
</form>
</div>
{% endblock body %}
views.py
def studentform(request):
if request.method == "POST":
prn_no = request.POST.get('prn_no'),
fname = request.POST.get('fname'),
lname = request.POST.get('lname'),
dob = request.POST.get('dob'),
address = request.POST.get('address'),
gender = request.POST.get('gender'),
standard = request.POST.get('standard'),
guardian_id = request.POST.get('guardian_id')
s1 = student1(prn_no = prn_no , fname = fname ,
lname = lname, dob = dob , address = address ,
gender = gender, standard = standard , guardian_id = guardian_id )
s1.save()
return render(request,'studentform.html')
models.py
class student1(models.Model):
prn_no = models.IntegerField()
fname = models.CharField(max_length=20)
lname = models.CharField(max_length=20)
dob = models.DateField()
address = models.CharField(max_length=20)
gender = models.CharField(max_length=20)
standard = models.CharField(max_length=20)
guardian_id = models.CharField(max_length=20)
class Meta:
app_label = 'page1'
db_table='student'
Ошибка возврата:
В ошибке говорится, что prn_no
ожидается, что это будет строка, тогда как для prn_no
присвоен кортеж. Чтобы исправить это, в вашем views.py
файле необходимо удалить запятые в конце каждой строки.
def studentform(request):
if request.method == "POST":
prn_no = request.POST.get('prn_no')
fname = request.POST.get('fname')
lname = request.POST.get('lname')
dob = request.POST.get('dob')
address = request.POST.get('address')
gender = request.POST.get('gender')
standard = request.POST.get('standard')
guardian_id = request.POST.get('guardian_id')
s1 = student1(prn_no = prn_no , fname = fname ,
lname = lname, dob = dob , address = address ,
gender = gender, standard = standard , guardian_id = guardian_id )
s1.save()
return render(request,'studentform.html')