Мне удается получить данные временных рядов с помощью TruncYear / TruncMonth / TruncDay / и т. Д., Как показано ниже из таблицы отслеживания. Однако данные для места просто производят venue_id. Я хотел бы, чтобы это сериализовалось так, чтобы оно возвращало «имя» из таблицы отношений.
Я использую Django 1.11 и postgres 9.4
Вот мой код временного ряда:
tracking_in_timeseries_data = Tracking.objects.annotate(
year=TruncYear('created_at')).values('year', 'venue_id').annotate(
count=Count('employee_id',
distinct = True)).order_by('year')
return Response(tracking_in_timeseries_data, status=status.HTTP_200_OK)
в настоящее время выводится так:
[
{
"venue_id": 4,
"year": "2017-01-01T00:00:00Z",
"count": 1
},
{
"venue_id": 2,
"year": "2018-01-01T00:00:00Z",
"count": 2
},
{
"venue_id": 6,
"year": "2019-01-01T00:00:00Z",
"count": 1
}
]
Я хочу разбить данные о месте проведения, чтобы вернуть идентификатор и имя следующим образом:
[
{
"venue": {
id: 4,
name: "room A"
},
"year": "2017-01-01T00:00:00Z",
"count": 1
},
{
"venue": {
id: 2,
name: "room B"
},
"year": "2018-01-01T00:00:00Z",
"count": 2
},
{
"venue": {
id: 6,
name: "room C"
},
"year": "2019-01-01T00:00:00Z",
"count": 1
}
]
Как взорвать"место", чтобы вернуть идентификатор и имя? Имя полезно для целей презентации.
ОБНОВЛЕНИЕ (вот некоторые попытки, которые потерпели неудачу):
это только отображает счет, но накапливает (https://gist.github.com/axilaris/0cd86cec0edf675d654eadb3aff5b066). что-то странное и не знаю почему.
class TimeseriesSerializer(serializers.ModelSerializer):
venue = VenueNameSerializer(source="venue_id",many=False, read_only=True)
year = serializers.TimeField(read_only=True)
count = serializers.IntegerField(read_only=True)
class Meta:
model = Tracking
fields = ("venue",
"year",
"count")
class TimeseriesSerializer(serializers.Serializer): <-- here is another try but doesnt work serializers.Serializer
venue_id = VenueNameSerializer(many=False, read_only=True)
year = serializers.TimeField(read_only=True)
count = serializers.IntegerField(read_only=True)
Я думаю, что ответ довольно близок к этому: django rest framework сериализует словарь без создания модели
К вашему сведению, это мой настоящий код (должентакже поместите это здесь) для теста, имена могут немного отличаться, но все намерения те же. https://gist.github.com/axilaris/919d1a20d3e799101a8cf6aeb4d120b5