【问题标题】:ManyToManyField does not show多对多字段不显示
【发布时间】:2021-08-09 21:50:49
【问题描述】:

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

不确定我在哪里弄错了。

【问题讨论】:

  • 你能显示任何示例数据吗?
  • 我实际上在几分钟前就发现了问题所在,我只需要更新。

标签: python django django-models django-rest-framework


【解决方案1】:

原来我需要做的就是删除

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

并将我的 series 字段调整为

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2021-06-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多