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

ManyToManyField不显示

  •  -1
  • skoleosho97  · 技术社区  · 4 年前

    想要使用REST API来填充表,但是我的字段没有显示在API页面上。

    型号(系列、名册):

    class Series(models.Model):
        (...)
        def __str__(self):
            return self.title
    
    class Roster(models.Model):
        (...)
        series = models.ManyToManyField(Series)
        (...)
    
        def __str__(self):
            return self.name
    

    序列化程序:

    class SeriesSerializer(serializers.ModelSerializer):
        class Meta:
            model = Series
            fields = ('id', 'title', 'icon')
            read_only_fields = ('slug',)
    
    class RosterSerializer(serializers.ModelSerializer):
        series = SeriesSerializer(many=True, read_only=True)
    
        class Meta:
            model = Roster
            fields = ('id', 'name', 'number', 'primary_color', 'secondary_color', 'image', 'series')
    

    意见:

    class SeriesView(viewsets.ModelViewSet):
        serializer_class = SeriesSerializer
        queryset = Series.objects.all()
    
    class RosterView(viewsets.ModelViewSet):
        serializer_class = RosterSerializer
        queryset = Roster.objects.all()
    

    不知道我在哪里搞错了。

    0 回复  |  直到 4 年前
        1
  •  0
  •   skoleosho97    4 年前

    所以事实证明,我所需要做的就是移除

    series = SeriesSerializer(many=True, read_only=True)

    并调整我的 series 字段到

    series = models.ForeignKey(Series, on_delete=models.CASCADE, blank=True, null=True)

    不知道为什么这最终奏效了,所以解释一下还是很酷的。

    推荐文章