Сериализатор модели, унаследованный от 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 запрос сериализатора, значения должны храниться в одной таблице, это мой подход, похоже, что я почти закончил, но застрял на части сериализатора.