У меня есть такая модель:
class Test(models.Model):
textjson = models.TextField(default="Unassigned")
Поле textjson
содержит JSON в виде строки:
`'{"distance": 31702.1, "link": "www.strava.com/activities/2020494234", "athlete": 1, "average_speed": 6.499, "name": "Afternoon Ride", "start_date": "2018-12-16T12:13:42Z", "country": "Poland", "number": 2020494234, "date_added": "2018-12-16T20:14:01.362215Z"}`'
Я построил представление API для этой модели:
class ListTestsView(generics.ListAPIView):
serializer_class = TestSerializer
def get_queryset(self):
tests = Test.objects.all()
return tests
И я сериализую модель следующим образом:
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = '__all__'
Но это заставляет поле jsontext
снова сериализоваться при вызове представления API и появлении обратной косой черты:
[
{
"id": 1,
"textjson": "{\"distance\": 31702.1, \"link\": \"www.strava.com/activities/2020494234\", \"athlete\": 1, \"average_speed\": 6.499, \"name\": \"Afternoon Ride\", \"start_date\": \"2018-12-16T12:13:42Z\", \"country\": \"Poland\", \"number\": 2020494234, \"date_added\": \"2018-12-16T20:14:01.362215Z\"}"
}
]
Как переписать класс TestSerializer
, чтобы предотвратить сериализацию только поля value из textjson
?
Возможно, я будунужно переопределить to_representation
и to_internal_value
методы поля, но как?