使用django rest框架发布时发生AssertionError

使用django rest框架发布时发生AssertionError,django,django-rest-framework,Django,Django Rest Framework,使用django rest框架发布时发生AssertionError 发生错误之前的过程如下 我设置了url模式、视图和序列化器类 看法 序列化程序.py from django.contrib.auth import get_user_model from rest_framework import serializers from rest_framework.serializers import ModelSerializer from instagram.models import Po

使用django rest框架发布时发生AssertionError 发生错误之前的过程如下

  • 我设置了url模式、视图和序列化器类
  • 看法

    序列化程序.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',
    
          ]
    
  • 请到下面的地址
  • 3.张贴

    4.发生如下错误


    感谢您让我知道如何修复它

    它假定保存您在
    后序列化程序中提供的
    作者
    详细信息。您可以有自己的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)
        
    

    将序列化程序中的
    read\u
    设置为
    AuthorSerializer(read\u only=True)
    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/
    
    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)