AssertionError возникает при публикации с использованием django rest framework - PullRequest
0 голосов
/ 07 августа 2020

AssertionError возникает при публикации с использованием django rest framework Процесс, предшествующий возникновению ошибки:

  1. Я установил шаблон URL, представление и класс сериализатора
from django.urls import include, path
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()
router.register('post' , views.PostViewSet)
# print("router.urls : " , router.urls)

urlpatterns = [
    path('public/' , views.PublicPostListAPIView.as_view()),
    path('', include(router.urls)),
]


просмотр

from rest_framework import generics
from rest_framework.viewsets import ModelViewSet
from .serializers import PostSerializer
from .models import Post


class PublicPostListAPIView(generics.ListAPIView):
   queryset = Post.objects.filter(is_public=True)
   serializer_class = PostSerializer

class PostViewSet(ModelViewSet):
   queryset = Post.objects.all()
   serializer_class = PostSerializer

serializers.py

from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from instagram.models import Post

class AuthorSerializer(serializers.ModelSerializer):
   class Meta:
      model = get_user_model()
      fields = ['username','email']


class PostSerializer(ModelSerializer):
   author = AuthorSerializer()
   
   class Meta:
      model = Post
      fields = [
         'pk',
         'author',
         'message',
         'created_at',
         'updated_at',
         'is_public',

      ]
Запрос по указанному ниже адресу
http://127.0.0.1:8000/post/

3. отправка

enter image description here

4.error occured like below

введите описание изображения здесь

спасибо, что дайте мне знать, как это исправить

1 Ответ

1 голос
/ 07 августа 2020

Предполагается сохранить данные author, которые вы указали в своем PostSerializer. У вас может быть свой собственный метод create (), например:

def create(self, validate_data):
    data = validated_data
    author = data.get('author')
    # You can use author details here
    data.pop('author')
    return Post.objects.create(**data)
    
...