В чем причина того, что данные не сохраняются в базе данных?

Моя цель - сохранить данные из html form. Я пробовал разные способы, ниже приведен один из них. Но данные не сохраняются в базе данных😥. В чем проблема? Подходит ли этот способ?

views.py:

@api_view(['POST'])
def employeeListView(request):
    if request.method == 'POST':
        jsonData = JSONParser().parse(request)
        serializer = EmployeeSerializer(data=jsonData)

        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, safe=False)
        else:
            return JsonResponse(serializer.errors, safe=False)

def InsertAndInfo(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        data = {
            'name':name
        }
        headers = {'Content-Type': 'application/json'}

        read = requests.post('http://127.0.0.1:8000/api/employees/',json=data,headers=headers)

    return render(request, 'InsertAndInfo.html')

models.py:

class Employee(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField(max_length=30)
    phone = models.IntegerField()

serializer.py:

class EmployeeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Employee
        fields = "__all__"

urls.py:

path('', views.InsertAndInfo, name="InsertAndInfo"),
path('employees/', views.employeeListView, name="employeeListView")

Попробуйте это...

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status

@api_view(['POST'])
def employeeListView(request):
    if request.method == 'POST':
        serializer = EmployeeSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Я изменил phone = models.IntegerField(null=True) на phone = models.CharField(max_length=30, null=True), после чего все заработало

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