【问题标题】:Django Rest Framework not returning all fields after creationDjango Rest Framework在创建后不返回所有字段
【发布时间】:2014-11-05 01:50:12
【问题描述】:

总结:我正在使用 Django Rest 框架来创建一个简单的对象(如下所示)。在序列化程序中,我只采用必填字段。但是,我没有在 POST 响应中恢复所有字段(如 id、creation_date 等)。我只取回非只读字段。请帮忙:

型号

class Document(models.Model):
    owner = models.IntegerField(null=False)
    description = models.CharField(max_length=512, blank=True)
    created_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    expiry_time = models.DateTimeField(blank=True, null=True)
    status = models.CharField(max_length=128, blank=True)
    size = models.IntegerField(blank=True)
    type = models.IntegerField(max_length=128, blank=True)

序列化器

class DocumentCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Document
        fields = ('expiry_time', 'description', 'size', 'type', 'status')
        read_only_fields = ('id', 'owner', 'created_time', 'update_time')

查看

class DocumentViewSet(viewsets.ModelViewSet):
...
...

def get_serializer_class(self):
    if self.request.method == 'POST':
        serializer_class = DocumentCreateSerializer
    elif self.request.method == 'GET':
        serializer_class = DocumentGetSerializer
    elif self.request.method == 'PUT':
        serializer_class = DocumentUpdateSerializer
    elif self.request.method == 'PATCH':
        serializer_class = DocumentUpdateSerializer
    return serializer_class

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    如果您希望返回这些字段,则应将它们包含在fields

    class DocumentCreateSerializer(serializers.ModelSerializer):
        class Meta:
            model = Document
            fields = ('id', 'owner', 'created_time', 'update_time', 'expiry_time',
                      'description', 'size', 'type', 'status')
            read_only_fields = ('id', 'owner', 'created_time', 'update_time')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2014-07-01
      • 2014-04-03
      • 2019-03-25
      • 1970-01-01
      • 2021-08-20
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多