I'm trying to make an API with Django rest framework but I'm struggling to modify the JSON response as I want. If you need anything else, just ask, Thanks for your help!
models.py :
class Feature(models.Model):
name = models.CharField(max_length=255, unique=True, null=True)
def __str__(self):
return "{}" .format(self.name)
def save(self, *args, **kwargs):
super(Feature, self).save(*args, **kwargs)
class Opponent(models.Model):
name = models.CharField(max_length=255, unique=True, null=True)
features = models.ManyToManyField(Feature, blank=True, null=True)
def __str__(self):
return "{}" .format(self.name)
def save(self, *args, **kwargs):
super(Opponent, self).save(*args, **kwargs)
serializers.py :
class FeatureSerializer(serializers.ModelSerializer):
opponents = serializers.RelatedField(many=True)
class Meta:
model = Feature
views.py :
@csrf_exempt
@jsonify
def get_opponents(request):
if request.method == 'OPTIONS':
return HttpResponse()
opponents = list(Opponent.objects.all().values('id', 'features'))
return opponents
def jsonify(f):
@wraps(f)
def wrapper(*args, **kwds):
response = f(*args, **kwds)
if isinstance(response, HttpResponse):
return response
return HttpResponse(simplejson.dumps(response, ignore_nan=True))
return wrapper
JSON response :
[
{
"id": 1,
"features__name": "feature1"
},
{
"id": 1,
"features__name": "feature2"
}
]
What I want :
[
{
"id": 1,
"features": ["feature1", "feature2"]
}
]
@jsonifyhere? You don't seem to be using Django REST Framework at all here - you appear to be bypassing it, and using whatever thatjsonifydecorator is instead.@jsonify