Size: a a a

Django [ru] #STAY HOME

2020 June 28

AF

Anton Fircak in Django [ru] #STAY HOME
class DeviceMeasurement(models.Model):
   patient = models.ForeignKey(Patient, blank=True, null=True, on_delete=models.CASCADE)
   device = models.ForeignKey(Device, on_delete=models.CASCADE)
вот мне с этих ФК нужно только ид этих обьектов, а не весь обьект
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Fircak
ну +- да. я добавил values чтоб вернуть device не как целый обьект, а всего лишь id от этого обьекта, мб через annotate сделать это?
по-моему джанго там JOIN сделала
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Artem Gubatenko
по-моему джанго там JOIN сделала
даа, джоин есть
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Fircak
даа, джоин есть
поэтому и дублирование девайсов
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Artem Gubatenko
поэтому и дублирование девайсов
не совсем, потому что 2 записи в таблице результатов ж у 8го девайся, он это отобразил
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Fircak
не совсем, потому что 2 записи в таблице результатов ж у 8го девайся, он это отобразил
я про это и говорю
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
не совсем, потому что 2 записи в таблице результатов ж у 8го девайся, он это отобразил
сорри, потерял нить:
а какая проблема?
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Alex Dem
сорри, потерял нить:
а какая проблема?
при одинаковых девайс_ид делать чтоб они (результаты) хранились в списке, а не н кол-вом обьектов типа DeviceMeasurement
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
при одинаковых девайс_ид делать чтоб они (результаты) хранились в списке, а не н кол-вом обьектов типа DeviceMeasurement
т.е. проще говоря, тебе не хватает группировки?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
в общем получилось что-то такое:  "results": [
       {
           "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"
       },
только как видите 2 записи с одинаковым device__id, теперь придумать как бы обьеденить их в 1 запись со списком

запрос получился такой:
queryset = DeviceMeasurement.objects.values('patient__first_name','device__id','created_date','front_id','results__measurement_result','results__measurement_type').prefetch_related('results').all()
я так понимаю, что тут должна быть одна запись, а не две
и данные по FK должны сгруппироваться в list
источник

AF

Anton Fircak in Django [ru] #STAY HOME
{
   "result": {[
       "dia": 100,
       "sys": 200
]
   },
   "device":1
   "created_date": "2020-06-12T15:02:51.876797+03:00",
   "patient": null,
   "front_id": 10
}
источник

AD

Alex Dem in Django [ru] #STAY HOME
да?
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Alex Dem
я так понимаю, что тут должна быть одна запись, а не две
и данные по FK должны сгруппироваться в list
Да
источник

AD

Alex Dem in Django [ru] #STAY HOME
ты пробовал поработать с annotate?
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Мне писали про annotate,aggregate, но я недопер как его сделать, через q?
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Alex Dem
ты пробовал поработать с annotate?
Да вот щас как раз этим занимаюсь
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
Мне писали про annotate,aggregate, но я недопер как его сделать, через q?
нет, Q() - это обертка для фильтров
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
Мне писали про annotate,aggregate, но я недопер как его сделать, через q?
queryset.annotate(new_field= ..)
источник

AD

Alex Dem in Django [ru] #STAY HOME
Anton Fircak
Да вот щас как раз этим занимаюсь
тебе сначала надо продумать какой именно результат ты хочешь получить
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
queryset.annotate(new_field= ..)
И как это в  сериализатор пихать?
источник