2014-10-30 88 views
0

现在我返回一个带有模型字段及其值的JSON文件。我想向模型中不存在的JSON添加一些额外的字段(我想添加一个新字段,该字段指定用户是否可以根据视图的权限修改诊断)。我如何做到这一点?Django Rest框架 - 为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] 

serializers.py

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

回答

0

添加到您的意见

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 
+0

我试过的代码和作品,但不究竟。如果我在本地主机/诊断程序中执行了GET,但是如果我在本地主机/诊断程序/ 1中执行GET,那么JSON中的许可字段不会出现。 – Audoen 2014-10-30 12:03:10

0

您将它们添加到串行器。

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 
0

你必须使用下面的链接本地主机代码/诊断/ 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) 
+0

完美地工作。谢谢! – Audoen 2014-10-30 14:17:18