Django Форма публикует, но не отображает данные

Я работаю над проектом, но застрял на одной проблеме. Моя Django post форма не имеет никаких ошибок, но каждый раз, когда я отправляю форму, она перенаправляется как положено, но ничего не отображает. И у меня есть 5 форм одного типа, но только одна из них делает это.

Скод сниппета ниже

View.py

########################## PRESCRIPTION #####################################################
def patients_list(request):
    context = {'patients_list': Prescription.objects.all()}
    return render(request, 'dashboard/patients_list.html', context)


def patients_form(request, id=0):
    if request.method == 'GET':
        if id == 0:
            pform = PatientsForm()
        else:
            prescription = Prescription.objects.get(pk=id)
            pform = PatientsForm(instance=prescription)
        return render(request, 'dashboard/patients_form.html', {'pform': pform})
    else:
        if id == 0:
            pform = PatientsForm(request.POST)
        else:
            prescription = Prescription.objects.get(pk=id)
            pform = PatientsForm(request.POST, instance=prescription)
        if pform.is_valid():
            pform.save()
        return redirect('/list')

urls.py

########################## PRESCRIPTION #####################################################
    path('form', views.patients_form, name='patients_form'),
    path('list', views.patients_list, name='patients_list'),
    path('update_patient/<str:id>/', views.patients_form, name="update_patient"),
    path('patients_delete/<str:id>/', views.patients_delete, name="patients_delete"),
########################## END PRESCRIPTION #####################################################

patients_form.html

<form action="" method="POST">
                                {% csrf_token %}
                                <div class="form-group">
                                  {{pform.first_name|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.last_name|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.CNI|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.gender|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.marital_status|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.telephone1|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.telephone2|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.town|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.address|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.occupation|as_crispy_field}}
                                </div>
                                <div class="form-group">
                                  {{pform.status|as_crispy_field}}
                                </div>
                                <div class="row">
                                  <div class="col md 6">
                                    <button class="btn btn-success my-4" type="submit"> <i class="flaticon-381-database"> </i> Submit</button>
                                  </div>
                                  <div class="col md 6">
                                    <a href="{% url 'patients_list' %}" class="btn btn-secondary btn-block">Back To List
                                      <i class="fas fa-stream"></i>
                                    </a>
                                  </div>
                                </div>
                              </form>

Forms.py

class PatientsForm(forms.ModelForm):

    class Meta:
        model = Prescription
        fields = '__all__'
        labels = {
            'first_name': 'First Name',
            'last_name': 'Last Name'
        }

patients_list.html

{% for prescription in patients_list %}
            <tbody>
              <tr>
                <td>
                  <div class="custom-control custom-checkbox">
                    <input
                      type="checkbox"
                      class="custom-control-input"
                      id="customCheckBox2"
                      required=""
                    />
                    <label
                      class="custom-control-label"
                      for="customCheckBox2"
                    ></label>
                  </div>
                </td>
                <td>{{prescription.id}}</td>
                <td>{{prescription.date_added}}</td>
                <td>{{prescription.first_name}}</td>
                <td>{{prescription.last_name}}</td>
                <td>{{prescription.age}}Years</td>
                <td>{{prescription.doctor}}</td>
                <td>{{prescription.town}}</td>
                <td>{{prescription.gender}}</td>
                <td>
                  {% if prescription.status == 'New Patient' %}
                  <span class="badge badge-outline-primary">
                    <i class="fa fa-circle text-primary mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% elif prescription.status == 'In Treatement' %}
                  <span class="badge badge-warning light">
                    <i class="fa fa-circle text-warning mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% elif prescription.status == 'Recovered' %}
                  <span class="badge badge-info light">
                    <i class="fa fa-circle text-info mr-1"></i>
                    {{prescription.status}}
                  </span>
                  {% endif %}
                </td>
                <td>
                    <a href="{% url 'update_patient' prescription.id %}" class='btn text-secondary px-0'>
                        <i class="fa fa-pencil fa-fw"></i> Edit 
                    </a>
                </td>
                <td>
                  <form action="{% url 'patients_delete' prescription.id %}" method='post' class='d-inline'>
                    {% csrf_token %}
                    <button class="btn text-warning px-0" type="submit"><i class="fa fa-trash-o fa-fw"></i> Delete
                    </button>
                  </form>
                </td>
              </tr>
            </tbody>
            {% endfor %}

СПАСИБО ЗА ПОМОЩЬ

Пожалуйста, попробуйте использовать DGCBV в вашем случае createView и updateView. Это может быть намного лучше. подробнее здесь: https://docs.djangoproject.com/en/4.1/ref/class-based-views/flattened-index/#editing-views

в вашем случае:

def patients_form(request, id=0):
    if request.method == 'GET':
        # some staff on get without return 
    else:
        # some staffon post
        if pform.is_valid():
            pform.save()
            return redirect('/list')
    return render(request, 'dashboard/patients_form.html', {'pform': pform})

В этом коде вы возвращаете form-render, если форма НЕ валидна. В противном случае экземпляр должен быть сохранен, и вы переходите к '/list'

Вернуться на верх