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.

Вернуться на верх