Django Rest框架-向JSON添加字段
现在我返回一个JSON文件,其中包含模型字段及其值。我想向JSON中添加一些模型中不存在的额外字段(我想添加一个新字段,指定用户是否可以根据视图的权限修改诊断)。我怎么能做到 models.pyDjango 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=
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中的权限字段不会出现。效果会非常好。谢谢