Сериализатор модели, унаследованный от Django

Это мой models.py

from django.db import models
from django.contrib.auth.models import AbstractUser


# class User(AbstractUser):
#     pass


class JsonData(models.Model):
    speed = models.IntegerField()
    heading = models.IntegerField()
    altitude = models.FloatField()
    accuracy = models.FloatField()
    longitude = models.FloatField()
    altitudeAccuracy = models.FloatField(null=True)
    latitude = models.FloatField()
    class Meta:
        abstract = True
        

class ApiJsonData(JsonData):
    _id = models.CharField(null=True, max_length=100)
    # coords = models.ForeignKey(
    #     JsonData, on_delete=models.CASCADE, related_name='coords', null=True, blank=True)
    
    mocked = models.BooleanField()
    timestamp = models.FloatField()
    _v = models.IntegerField(null=True)
    createdAt = models.CharField(null=True, max_length=100)
    updatedAt = models.CharField(null=True, max_length=100)

и serializers.py:

class JsonSerializer(serializers.ModelSerializer):

    accuracy = serializers.FloatField()
    altitude = serializers.FloatField()
    latitude = serializers.FloatField()
    longitude = serializers.FloatField()
    heading = serializers.IntegerField()
    speed = serializers.IntegerField()
    altitudeAccuracy = serializers.FloatField()

    class Meta:
        model = JsonData
        fields = ['accuracy', 'altitude', 'latitude', 'longitude',
                  'heading', 'speed', 'altitudeAccuracy']


class ApiJsonSerializer(serializers.ModelSerializer):
    # coords=JsonSerializer(many=True)
    _id = serializers.CharField()
    mocked = serializers.BooleanField()
    timestamp = serializers.FloatField()
    _v = serializers.IntegerField()
    createdAt = serializers.CharField()
    updatedAt = serializers.CharField()

    class Meta(JsonSerializer.Meta):
        model = ApiJsonData
        fields = ['_id', 'mocked', 'timestamp', '_v', 'createdAt', 'updatedAt']

Мой json вход должен выглядеть следующим образом:

{
    "_id": "63045167b858bd8b0349638b",
    "coords": {
        "speed": 0,
        "heading": 90,
        "altitude": 191.89999389648438,
        "accuracy": 16.527000427246094,
        "longitude": 77.0809108,
        "altitudeAccuracy": 13.011088371276855,
        "latitude": 28.6299509
    },
    "mocked": false,
    "timestamp": 1661227133624,
    "__v": 0,
    "createdAt": "2022-08-23T04:02:47.272Z",
    "updatedAt": "2022-08-23T04:02:47.272Z"
}

Я пытался написать сериализатор для вышеуказанного json, чтобы значения могли быть в одной таблице (модель ApiJsonData). Когда я ввожу этот json в POST запрос сериализатора, значения должны храниться в одной таблице, это мой подход, похоже, что я почти закончил, но застрял на части сериализатора.

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