2014-10-30 2 views
0

이제 모델 필드와 해당 값이있는 JSON 파일을 반환합니다. JSON에 모델에없는 일부 추가 필드를 추가하고 싶습니다. 사용자가 뷰의 사용 권한을 기반으로 진단을 수정할 수 있는지 여부를 지정하는 새 필드를 추가하려고합니다. 내가 어떻게 할 수 있니?Django Rest Framework - 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

내가 코드와 작품을 시도했지만 적이 없다 정확하게. localhost/diagnostics에서 GET을 수행하면 localhost/diagnostics/1에서 GET을 수행하면 JSON의 권한 필드가 나타나지 않습니다. – Audoen

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

당신은 URL의 로컬 호스트에 대한 다음 코드를 사용할 필요가/진단/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

관련 문제