首页 文章

Django休息序列化器没有序列化相关字段

提问于
浏览
0

在视图集中,我在request.data(传递外键)中获取字段,但是serializer.data只给出非相关字段,我有5个字段,其中1是外键,1是manytomany关系 .

模型-

class Movie(models.Model):

popularity = models.DecimalField(max_digits=3, decimal_places=1 )
imdb_score = models.DecimalField(max_digits=2, decimal_places=1)
name = models.CharField(max_length=200)
director = models.ForeignKey(Director)
genre = models.ManyToManyField(Genre)

Serializer - 类MovieSerializer(serializers.ModelSerializer):

class Meta:
    model = Movie
    fields='__all__'
    depth = 1

viweset - 类MovieViewSet(viewsets.ModelViewSet):

queryset = Movie.objects.all()
serializer_class = MovieSerializer
permission_classes = [IsAuthenticated]
authentication_classes = [TokenAuthentication]

1 回答

  • 0

    试试这个片段,

    views.py

    class MovieViewSet(viewsets.ModelViewSet):
        queryset = Movie.objects.all()
        serializer_class = MovieSerializer
        permission_classes = [IsAuthenticated]
        authentication_classes = [TokenAuthentication]
    

    models.py

    class Director(models.Model):
        name = models.CharField(max_length=100)
    
        # extra fields
        def __str__(self):
            return self.name
    
    
    class Genre(models.Model):
        name = models.CharField(max_length=100)
        # extra fields
    
    
    class Movie(models.Model):
        popularity = models.DecimalField(max_digits=3, decimal_places=1)
        imdb_score = models.DecimalField(max_digits=2, decimal_places=1)
        name = models.CharField(max_length=200)
        director = models.ForeignKey(Director)
        genre = models.ManyToManyField(Genre)
    
        def __str__(self):
            return self.name
    

    serializer.py

    class MovieSerializer(serializers.ModelSerializer):
        name = serializers.StringRelatedField()
        director = serializers.StringRelatedField()
    
        class Meta:
            model = Movie
            fields = '__all__'
            depth = 1
    

    Expected Output

    [
        {
            "id": 2,
            "name": "Thor",
            "director": "director_1",
            "popularity": "7.0",
            "imdb_score": "5.0",
            "genre": [
                {
                    "id": 3,
                    "name": "Action"
                }
            ]
        }
    ]
    

    如果有效,请告诉我 .

相关问题