Мой API отправляет данные, но они не сохраняются в бэкенде

Итак, я следовал этому руководству https://youtu.be/hISSGMafzvU, с другим моим подходом (вместо того, чтобы быть приложением для работы, я пытаюсь сделать из него систему управления клиникой).

Итак, проблема, с которой я столкнулся, заключается в том, что мой api получает данные, и нет никаких ошибок, плюс я получаю код состояния 200 от локального сервера, что означает, что все в порядке, но это не так, следовательно, данные не сохраняются в БД по какой-то причине.

вот код:

models.py

class Employee(models.Model):
    fullname                   = models.CharField(max_length = 250)
    age                        = models.DateField(null=True, blank=True)
    gender                     = models.CharField(max_length=10, 
    choices=(('Male', 'Male'), ('Female', 'Female')), default='Male')
    usertype                   = models.CharField(max_length = 50, choices=
    (('Admin','Admin'),('Doctor','Doctor'),('Receptionist','Receptionist')),
    default='Receptionist')
    
    def __str__(self):
        return self.fullname

class Patient(models.Model):
    fullname                   = models.CharField(max_length = 250)

    def __str__(self):
        return self.fullname

class Appointments(models.Model):
    Paitent_Attending                = models.ForeignKey(Patient, on_delete= models.CASCADE)
    Doctor_Attending                 = models.ForeignKey(Employee, on_delete= models.CASCADE)
    appointment_date                 = models.DateField()

    def __str__(self):
        return self.Paitent_Attending.fullname

serializers.py

from rest_framework import serializers
from .models import Employee,Patient,Appointments



class PatientSerializers(serializers.ModelSerializer):
    class Meta:
        model = Patient
        fields = '__all__'

class EmployeeSerializers(serializers.ModelSerializer):
    class Meta:
        model = Employee
        fields = '__all__'

class AppointmentsSerializers(serializers.ModelSerializer):
    class Meta:
        model = Appointments
        fields = '__all__'

views.py

JS, который отправляет данные через fetch api.

function getCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        const cookies = document.cookie.split(';');
        for (let i = 0; i < cookies.length; i++) {
            const cookie = cookies[i].trim();
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
const csrftoken = getCookie('csrftoken');

var form = document.getElementById('newPatient');
form.addEventListener('submit', function(e) {
    e.preventDefault()
    console.log('form submited');
    var url = 'http://127.0.0.1:8000/api/add-patient/'
    var Fullname = document.getElementById('Fullname').value
    fetch(url, {
        method: 'POST',
        headers:{
            'Content-Type': 'application/json',
            'X-CSRFToken' : csrftoken,
        },
        body: JSON.stringify({'Fullname':Fullname})
    }

    )
})

Я все еще новичок в мире api, я запутался здесь, помогите!

Это одна из тех глупых ошибок, когда вы не фокусируетесь на именах lol.

Имя свойства addPatient fullname fetch api пыталась отправить данные на адрес Fullname заглавная буква F, которая не существует, в результате чего данные не были сохранены из-за этого кода в views.py

def addPatient(request):
   serializer = PatientSerializers(data=request.data)

   if serializer.is_valid():
       serializer.save()

   return Response(serializer.data)

сериализатор получал данные, но из-за заглавной буквы F они не соответствовали атрибуту addPatient, который является fullname, а не Fullname, что привело к тому, что сериализатор не был действительным, не выполнив условие оператора if, и не сохранив данные xD, sigh

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