Заполните форму и сохраните ее в db-базе

Я работаю над проектом Django и хочу заполнить форму и сохранить данные в базе данных db, а затем иметь возможность показать их на другой странице, мне удалось создать форму, но она ничего не записывает в базу данных. Вот как у меня сейчас обстоят дела:

forms.py

    from django import forms
    from .models import AusenciasForm
    from django.contrib.auth.models import User
    
class AusenciasForm(forms.ModelForm):
    class Meta:
        model = AusenciasFormulario
        fields = '__all__'
        widgets = {'fecha': forms.DateInput(attrs={'type': 'date'})}

models.py

from django.db import models
from django.utils import timezone
import datetime
from django.contrib.auth.models import User
from django.urls import reverse
    
class AusenciasFormulario(models.Model):
    #razon = models.ModelChoiceField(label="Razón", queryset=razones.object.all())
    fecha = models.DateField(("Date"),default=datetime.date.today)#label="Fecha", required=True
    razon = [
        ('Estudios/Examen','Estudios/Examen'),
        ('Enfermedad','Enfermedad'),
        ('Lesión','Lesión'),
        ('Motivos personales','Motivos personales'),
        ('Motivos familiares','Motivos familiares'),
        ('Otros','Otros')
    ]
    motivo = models.CharField(max_length=100, choices=razon, default='Otros')
    comentarios= models.CharField(max_length=200,blank=True)
    jugador = User

views.py

class FormularioAusenciaView(HttpRequest):

    def index(request):
        AusenciasFormulario = AusenciasForm()
        return render(request, 'blog/formularioAusencia.html', {'form':AusenciasFormulario})

    def procesar_formulario(request):
        AusenciasFormulario = AusenciasForm()
        if AusenciasFormulario.is_valid():
            AusenciasFormulario.save()
            AusenciasFormulario = AusenciasForm()
        return render(request, 'blog/formularioAusencia.html', {'form':AusenciasFormulario, 'mensaje': 'ok'})

Urls.py

from django.urls import path
from .views import PostListView, PostDetailView, PostCreateView, PostUpdateView, PostDeleteView,UserPostListView, FormularioAusenciaView, ausencias
from .import views
from django.contrib.auth.decorators import login_required

urlpatterns = [
    path('', login_required(PostListView.as_view()), name='blog-home'),
    path('user/<str:username>',login_required( UserPostListView.as_view()), name='user-posts'),
    path('post/<int:pk>/',login_required( PostDetailView.as_view()), name='post-detail'),
    path('post/new/',login_required( PostCreateView.as_view()), name='post-create'),
    path('post/<int:pk>/update/',login_required( PostUpdateView.as_view()), name='post-update'),
    path('post/<int:pk>/delete/',login_required( PostDeleteView.as_view()), name='post-delete'),
    path('about/', views.about, name='blog-about'),
    path('formularioAusencia/',login_required( FormularioAusenciaView.index), name='formularioAusencia'),
    #path('asistencia_done/',formularioAusencia, name='asistencia_done'),
    path('ausencias/',login_required( views.ausencias), name='ausencias'),
    
]

шаблон

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
    <div class="media">
      <img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
      <div class="media-body">
        <h2 class="account-heading">{{ user.username }}</h2>
        <p class="text-secondary">{{ user.email }}</p>
      </div>
    </div>
    {% if user.is_authenticated %}
    <p></p><a class="mr-2">Rellenar si no vas a poder acudir a un próximo entrenamiento o partido</a></p>
    <!--<label><input type="checkbox" id="cbox1" value="first_checkbox"></label><br>-->
        <form method="POST" action="{% url 'ausencias' %}">{% csrf_token %}
          {{ form|crispy }}

          <button class="btn btn-danger btn-sm mt-1 mb-1" type="submit">Enviar</button>
        </form>
        </div>
        <div class="form-group">
        </div>
      {% endif %}
  </div>
{% endblock content %}

разве вам не нужно использовать :

    if request.method == 'POST'

В файле forms.py:

Вы импортировали неправильное имя модели:

измените это

from .models import AusenciasForm

К этому:

from .models import AusenciasFormulario

А в файле views.py: Вы не добавили ни одного запроса orm, поэтому он не сохраняется в db.

views.py :

Сделайте следующее:

def index(request):
    ausencias_formulario =  AusenciasFormulario.objects.all() #Here i have retrieved data using orm
    return render(request, 'blog/formularioAusencia.html', {'ausencias_formulario':ausencias_formulario})

def procesar_formulario(request):
    if request.method == 'POST':
       form = AusenciasForm()
       if form.is_valid():
           form.save()
           return HttpResponseRedirect('/home/') #Add your route name, where you want to go after form save
    else:
         form = AusenciasForm()
    return render(request, 'blog/formularioAusencia.html', {'form':form})

А в ваших шаблонах:

formularioAusencia.html

<form method='post'>
   {{form}}
  <input type="submit" />     #Added new code here
</form>

После отправки формы, используя приведенный ниже код, вы получите эти поля. Добавьте приведенный ниже код после тега формы.

Для отображения всех полей в шаблонах добавьте следующий код в шаблон:

{% for field in ausencias_formulario %}
   {{field.fecha}}
   #Add remaining fields here to display
{% endfor %}
Вернуться на верх