Почему данные JSONField не отображаются корректно в ответе векторной плитки?

Я столкнулся с проблемой отображения данных из JSONField в векторной плитке (MVT) в Django.

Значение данных в столбце test_json_field следующее:

{
  "look": "1",
  "at": 2,
  "some": "asdfjkl;",
  "JSON": [
    {
      "data": 1234,
      "arranged": "(and how!)"
    },
    "as an example"
  ]
}

В моем коде я определил tile_fields как:

tile_fields = ("start_time", "end_time", "test_json_field")

Однако, когда я отображаю представление, я вижу только следующие поля в ответе JSON:

`{
  "start_time": "2024-12-12 08:00:00+00",
  "end_time": "2024-12-12 08:15:00+00",
  "at": 2,
  "look": "1",
  "some": "asdfjkl;",
  "layer": "trajectory"
}
`

Но другие значения в столбце test_json_field (например, массив JSON) не отображаются.

Вот мой код: Класс TrajectoryTileView:

`class TrajectoryTileView(VectorLayer):
    """
    A view to represent trajectory data as a vector tile layer.
    """
    model = Trajectory
    id = "trajectory"
    tile_fields = ("start_time", "end_time", "test_json_field")
    geom_field = "geom"

    def get_queryset(self):
        device_id = getattr(self, "device_id", None)
        queryset = Trajectory.objects.all()
        if device_id:
            queryset = queryset.filter(device__uid=device_id)
        return queryset`

Класс TrajectoryMVTView:

`class TrajectoryMVTView(MVTView):
    """
    MVTView handles one or more vector layers defined in the layer_classes attribute.
    """
    layer_classes = [TrajectoryTileView]

    def get(self, request, *args, **kwargs):
        device_id = kwargs.get("device_id")
        for layer_class in self.layer_classes:
            layer_class.device_id = device_id
        try:
            response = super().get(request, *args, **kwargs)
        except Exception as e:
            print(f"An error occurred: {e}")
            raise
        return response`

Модель траектории:

`class Trajectory(models.Model):
    uid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
    device = models.ForeignKey(Device, on_delete=models.CASCADE, related_name='trajectories')
    geom = models.LineStringField(srid=3857)  # Line representing the trajectory
    device_data = models.JSONField(blank=True, null=True)  # List of attributes associated with each point
    start_time = models.DateTimeField(auto_now_add=True)  # Start time of the trajectory
    end_time = models.DateTimeField(null=True, blank=True)  # End time of the trajectory
    test_json_field = models.JSONField(null=True)
`

Вопрос: Почему другие значения в поле test_json_field (например, массив JSON) не отображаются в ответе? Может быть, проблема в том, как я настроил tile_fields или обработал JSONField в представлении?

Спасибо за помощь!

Я уже реализовал сериализацию

class TrajectoryPropertiesSerializer(serializers.ModelSerializer):
    device_data = serializers.JSONField(read_only=True, allow_null=True)
    class Meta:
        model = Trajectory
        fields = ['device_data', 'device', "geom", "start_time", "end_time","test_json_field"]

Это получение функции во фронтенде (Angular):

this.map.on('click', (e) => {
    const clickedFeature = this.map.forEachFeatureAtPixel(e.pixel, (feature) => {
      return feature;
    });

    if (clickedFeature) {
      const feature = clickedFeature as Feature; 
      console.log("FEATURE VALUES ==>>>>>>  ", feature);
    }
});
Вернуться на верх