Django Rest Framework序列化器不会显示所有字段

时间:2018-08-09 13:44:20

标签: python django serialization django-rest-framework

我有一个问题,即DRF无法正确显示模型类/参考表(特别是主键)的所有字段。

我的模型类如下(非常简单):

class UnitOfIssue(models.Model):
    code = models.CharField(max_length=2, primary_key=True)
    description = models.CharField(max_length=16)

    class Meta:
        ordering = ('code',)                                                                                                                                                   

    def __str__(self):
        return "{0} - {1}".format(self.code, self.description)

我的序列化器如下所示:

class UnitOfIssueSerializer(serializers.HyperlinkedModelSerializer):
    """ 
    """
    url = serializers.HyperlinkedIdentityField(
            read_only=True,
            view_name='unitofissue-detail',
            format='html',
            lookup_field='code')

    class Meta:
        model = UnitOfIssue
        fields = ('code', 'description', 'url')
        # fields = '__all__'                                     

我正在使用通用视图:

class UnitOfIssueDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = UnitOfIssue.objects.all()
    serializer_class = UnitOfIssueSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
    lookup_field = 'code'

为了在自动生成的UI中显示UnitOfIssue主键code,我必须在序列化程序中定义fields = ('code', 'description', 'url'),而不是fields = '__all__'。 / p>

我只想使用'__all__'语法,但我不知道出了什么问题。

此外,我正在使用Django == 1.11.13和djangorestframework == 3.8.2

1 个答案:

答案 0 :(得分:0)

这个问题困扰了我数周,但那是一个简单的错误。我通过更改以下内容的序列化器基类来解决此问题:

class UnitOfIssueSerializer(serializers.HyperlinkedModelSerializer):

至:

class UnitOfIssueSerializer(serializers.ModelSerializer):