Django Rest框架-向JSON添加字段

Django Rest框架-向JSON添加字段,json,django,django-rest-framework,Json,Django,Django Rest Framework,现在我返回一个JSON文件,其中包含模型字段及其值。我想向JSON中添加一些模型中不存在的额外字段(我想添加一个新字段,指定用户是否可以根据视图的权限修改诊断)。我怎么能做到 models.py class Diagnostic(models.Model): Center = models.TextField(blank=True) Author = models.TextField(blank=True) Email = models.EmailField(blank=

现在我返回一个JSON文件,其中包含模型字段及其值。我想向JSON中添加一些模型中不存在的额外字段(我想添加一个新字段,指定用户是否可以根据视图的权限修改诊断)。我怎么能做到

models.py

class Diagnostic(models.Model):
    Center = models.TextField(blank=True)
    Author = models.TextField(blank=True)
    Email = models.EmailField(blank=True)
    Date = models.DateField(null = True, blank=True)
views.py

class DiagnosticViewSet(viewset.ModelViewSet):
    model = Diagnostic
    permission_classes = [GroupPermission]
序列化程序.py

class DiagnosticSerializer(serializers.ModelSerializer):
    class Meta:
        model = Diagnostic

您可以将它们添加到序列化程序中

class DiagnosticSerializer(serializers.ModelSerializer):
    auth_status = serializers.SerializerMethodField('get_auth_status')
    class Meta:
        model = Diagnostic

    def get_auth_status(self, obj):
        if obj.has_auth():
            return True
        return False
将此添加到您的视图中

 def list(self, request, *args, **kwargs):
    response = super(Classname, self).list(request, *args, **kwargs)
    try:
        response.data['permission'] = 'give your permission'
    except:
        pass
    return response

您必须为url localhost/diagnostics/1使用以下代码

 from rest_framework.response import Response

 def retrieve(self, request, *args, **kwargs):
    self.object = self.get_object()
    serializer = self.get_serializer(self.object)
    data = serializer.data
    data['permission'] = 'give your permission'
    return Response(data)

我已经试过了代码,但并不完全有效。如果我在localhost/diagnostics中执行GET操作,效果会非常好,但是如果我在localhost/diagnostics/1中执行GET操作,则JSON中的权限字段不会出现。效果会非常好。谢谢