Сбой ограничения NOT NULL: DJANGO Rest Framework

Я следую учебнику udemy, и все идет хорошо, пока я не пытаюсь сделать POST для создания статьи о базе данных.

Когда я отправляю POST на /api/posts

с Многочастная форма:

title: What is Java?

description: Java

order: 1

Я получаю ошибку:

NOT NULL constraint failed: posts_post.order

Я не могу найти решение для этой конкретной ситуации. Поэтому я предоставляю вам код моего:

models.py:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField()
    order = models.IntegerField()
    created_at = models.DateTimeField(auto_now_add=True)

serializers.py:

from rest_framework.serializers import ModelSerializer
from posts.models import Post

class PostSerializer(ModelSerializer):
    class Meta:
        model = Post
        fields = ['title', 'description', 'created_at']

views.py

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from posts.models import Post
from posts.api.serializers import PostSerializer

class PostApiView(APIView):
    def get(self, request):
        serializer = PostSerializer(Post.objects.all(), many=True)
        return Response(status=status.HTTP_200_OK, data=serializer.data)

    def post(self, request):
        print(request.POST)
        serializer = PostSerializer(data=request.POST)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(status=status.HTTP_200_OK, data=serializer.data)

Я могу правильно выполнить GET запрос к моему api/posts. Настоящая проблема заключается в запросе POST, где я должен создать новую статью/пост

Поле order не включено в сериализатор. Вам необходимо добавить order в fields.

class PostSerializer(ModelSerializer):
    class Meta:
        model = Post
        fields = ['title', 'description', 'order, 'created_at']

Вы используете ввод как title, description и order, но в вашем serializer вы не упомянули поле order, поэтому вам нужно упомянуть поле order в вашем serializer

class PostSerializer(ModelSerializer):
    class Meta:
        model = Post
        fields = ['title', 'description', 'order, 'created_at']
Вернуться на верх