2014-10-30 123 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

相關問題