首页 > 解决方案 > 多对多字段不显示

问题描述

想要使用 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()

不确定我在哪里弄错了。

标签: pythondjangodjango-modelsdjango-rest-framework

解决方案


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

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

并将我的series领域调整为

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

不知道为什么这最终会起作用,所以解释仍然很酷。


推荐阅读