Я создал форму для получения значения и размещения его в таблице. Но всякий раз, когда я нажимаю кнопку «Отправить», он не сохраняет и не выдает никаких ошибок. Он просто остается на этой странице.
Model.py
class Employee(models.Model):
ename=models.CharField(max_length=120)
eaddress=models.CharField(max_length=120)
eemail=models.CharField(max_length=120)
ephone=models.CharField(max_length=120)
emobile=models.CharField(max_length=120)
eid=models.CharField(max_length=120)
egender=models.CharField(max_length=120)
ehire=models.DateTimeField()
edob=models.DateTimeField()
class Meta:
db_table = "employee"
views.py
def employee(request):
emp=Employee.objects.all()
return render(request,'employee.html',{'emp':emp})
def addemployee(request):
if request.method == 'POST':
emp = EmployeeForm(request.POST)
if emp.is_valid():
try:
form.save()
return redirect(employee)
except:
pass
else:
emp = EmployeeForm()
return render(request,'addemployee.html',{'emp':emp})
addemployee.html:
<form method = "POST" action = "add_employee">
{% csrf_token %}
{{emp.ename}}
{{emp.eemail}}
{{emp.emobile}}
<button type = "submit">Submit</button>
</form>





Вам нужно отобразить ошибки формы в шаблоне. Поэтому обновите свой вид и шаблон следующим образом:
def addemployee(request):
emp = EmployeeForm(request.POST or None)
if request.method == 'POST':
if emp.is_valid():
try:
emp.save()
return redirect(employee)
except Exception as e:
raise e # for debug purpose now
return render(request,'addemployee.html',{'emp':emp})
addemployee.html:
<form method = "POST" action = "add_employee">
{% csrf_token %}
{{ emp.errors }} // it will render form errors
{{emp.ename}}
{{emp.eemail}}
{{emp.emobile}}
<button type = "submit">Submit</button>
</form>
Я предполагаю, что ваша форма не проходит проверку, потому что у вас есть много полей, таких как eid, egender и т. д., которые необходимы для ее сохранения в базе данных. Если вы используете Modelform, вы можете использовать {{ emp.as_p }}в соответствии с документацией по рендерингу формы для рендеринга формы вместо {{emp.ename}} {{emp.eemail}} {{emp.emobile}}.
я нашел ошибку сейчас. Это было в файле просмотра. Я использовал form.save(), но нет объекта формы, который я объявил. ehire' не может быть нулевым")
Да, вы правы. Я тоже пропустил эту часть.
Вам нужно отобразить поле ehire в форме. Если вы не хотите нанимать, вы можете либо сделать его обнуляемым, либо использовать auto_add_now=True. Дополнительную информацию можно найти в документации docs.djangoproject.com/en/2.2/ref/models/fields/#datetimefield.
я сделал его обнуляемым, но также показывает то же исключение
если я сделаю его обнуляемым, исключение не придет, но дата не сохраняется в БД. Она показывает ноль в БД
я также пробовал {{emp.as_p}}. Тем не менее форма не сохраняется, а страница также не переходит на следующую страницу. Это также не дает никаких ошибок