I don't know how to merge all refetch_related objects from MeasurememtResult table to one list objects:
models.py
class DeviceMeasurement(models.Model):
patient = models.ForeignKey(Patient, blank=True, null=True, on_delete=models.CASCADE)
device = models.ForeignKey(Device, on_delete=models.CASCADE)
created_date = models.DateTimeField()
front_id = models.UUIDField(blank=True, null=True)
class MeasurememtResult(models.Model):
measurement_result = models.FloatField()
measurement_type = models.CharField(choices=MEASUREMENT_TYPES, max_length=30)
device_measurement_id = models.ForeignKey(DeviceMeasurement, related_name='res_data', on_delete=models.CASCADE)
views.py
class GetMeasurements(viewsets.GenericViewSet, mixins.ListModelMixin):
permission_classes = (IsAuthenticated,)
serializer_class = GetMeasurementsSerializer
queryset = DeviceMeasurement.objects.values('patient__first_name', 'device__id', 'created_date', 'front_id',
'results__measurement_result',
'results__measurement_type').prefetch_related('res_data').all()
serializers.py
class GetMeasurementsSerializer(serializers.Serializer):
created_date = serializers.DateTimeField()
front_id = serializers.UUIDField()
patient__first_name = serializers.CharField()
device__id = serializers.IntegerField()
results__measurement_result = serializers.IntegerField()
results__measurement_type = serializers.CharField() `
So, I got Response like as:
[
{
"created_date": "2020-06-05T15:03:22.481032+03:00",
"front_id": null,
"patient__first_name": "Alex",
"device__id": 8,
"results__measurement_result": 100,
"results__measurement_type": "blood_pressure_SYS"
},
{
"created_date": "2020-06-05T15:03:22.481032+03:00",
"front_id": null,
"patient__first_name": "Alex",
"device__id": 8,
"results__measurement_result": 120,
"results__measurement_type": "blood_pressure_DIA"
}
]
But I should return list of MeasurememtResult objects like as: In 2 objects i have equal values of device_id.
{
"created_date": "2020-06-05T15:03:22.481032+03:00",
"front_id": null,
"patient__first_name": "Alex",
"device__id": 8,
"res_data": [
{
"results__measurement_result": 120,
"results__measurement_type": "blood_pressure_DIA"
},
{
"results__measurement_result": 100,
"results__measurement_type": "blood_pressure_SYS"
}
]
}