代码之家  ›  专栏  ›  技术社区  ›  E_K

我的序列化程序返回的是索引,而不是实际字段

  •  1
  • E_K  · 技术社区  · 8 年前

    我是Django新手,我一直在尝试序列化名为 MoviesCategories .

    class MoviesCategories(models.Model):
        name = models.CharField(max_length=120, null=False)
    
        def __str__(self):
            return self.name
    

    还有一个 Movie 型号如下

    class Movie(models.Model):
        name = models.CharField(max_length=120, null=False)
        thumbnail = models.CharField(max_length=120, null=False)
        source_url = models.CharField(max_length=500, null=False)
        duration = models.TimeField(default=timedelta(hours=2))
        added_on = models.DateTimeField(auto_now_add=True)
        category = models.ForeignKey(MoviesCategories, related_name="movies", on_delete=models.DO_NOTHING)
    
        def __str__(self):
            return self.name
    
        class Meta:
            ordering = ('added_on',)
    

    我的 MoviesCategoriesSerializer 看起来像这样

    class MoviesCategoriesSerializer(serializers.ModelSerializer):
        class Meta:
            model = MoviesCategories
            fields = ('name', 'movies')
    

    当我这样做时,我从这个序列化程序中得到了什么 MoviesCategoriesSerializer(MoviesCategories.objects.first()).data {'movies': [1, 2], 'name': 'Animations'} 我也希望能得到电影的领域。我创建了一个 MovieSerializer

    class MovieSerializer(serializers.ModelSerializer): class Meta: model = Movie fields = ('name', 'thumbnail', 'source_url', 'duration') 但我不知道如何将两者联系起来 MoviesCategorizeSerializer(MoviesCategories.objects.first())。数据 返回第一类中的所有电影

    1 回复  |  直到 8 年前
        1
  •  2
  •   neverwalkaloner    8 年前

    您需要添加 MovieSerializer MoviesCategoriesSerializer 字段:

    class MoviesCategoriesSerializer(serializers.ModelSerializer):
        movies = MovieSerializer(many=True, read_only=True)
        class Meta:
            model = MoviesCategories
            fields = ('name', 'movies')
    

    查看详细信息 here .