Rest_marshmallow: Вложенная схема не загружается
У меня проблемы с загрузкой вложенной схемы с помощью сериализатора marshmallow.
models.py
from django.db import models
class User(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
email = models.CharField(max_length=200, unique=True)
created = models.DateTimeField(auto_now_add=True)
last_updated = models.DateTimeField(auto_now=True)
class Upload(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
state = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
class Location(models.Model):
upload = models.ForeignKey(Upload, on_delete=models.CASCADE)
lat = models.FloatField()
long = models.FloatField()
serializers.py
from rest_marshmallow import Schema, fields
class LocationSchema(Schema):
lat = fields.String()
long = fields.String()
class UploadsSchema(Schema):
id = fields.Integer()
state = fields.String()
location = fields.Nested(LocationSchema)
user_id = fields.Integer()
created = fields.DateTime()
class UserSchema(Schema):
id = fields.Integer()
first_name = fields.String()
last_name = fields.String()
email = fields.Email()
created = fields.DateTime()
last_updated = fields.DateTime()
views.py
class UploadsView(ListView):
def get(self, request, user_id):
upload = Upload.objects.filter(user_id=user_id)
serializer = UploadsSchema(upload, many=True)
return JsonResponse(serializer.data, safe=False)
def post(self, request, user_id):
data = json.loads(request.body)
user = User.objects.get(id=user_id)
upload = Upload(state=data['state'], user=user)
upload.save()
recent_upload = Upload.objects.filter(user_id=user_id).latest('created')
location = Location(lat=data['lat'], long=data['long'], upload=recent_upload)
location.save()
message = {
"data": "Success"
}
return JsonResponse(message, safe=False)
GET на UploadsView
возвращает все поля, кроме поля Nested.
Вот пример ответа:
{
"user_id": 2,
"id": 5,
"created": "2022-08-05T17:44:30.829087+00:00",
"state": "happy"
}
Я попробовал location = fields.Nested(LocationSchema(many=True))
, но и это, похоже, не работает. Что я делаю не так? TIA.