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

Я попробовал код и работает, но не в точку. Если я выполняю GET в localhost/diagnostics, отлично работает, но если я делаю GET в localhost/diagnostics/1, поле разрешения в 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

Смежные вопросы