Size: a a a

Django [ru] #STAY HOME

2020 June 28

N

Nire in Django [ru] #STAY HOME
Там типа такой же рефка нет? Ток активация
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Anton Fircak
class ResultSerializer(serializers.Serializer):
   measurement_result = serializers.FloatField()
   measurement_type = serializers.CharField()


class GetMeasurementsSerializer(serializers.Serializer):
   created_date = serializers.DateTimeField()
   front_id = serializers.UUIDField()
   patient__first_name = serializers.CharField()
   device__id = serializers.IntegerField()
   results = ResultSerializer(many=True)

class GetMeasurements(viewsets.GenericViewSet, mixins.ListModelMixin):
   permission_classes = (AllowAny,)
   serializer_class = GetMeasurementsSerializer
   queryset = DeviceMeasurement.objects.prefetch_related('results').values('device__id',
                                                           'patient__first_name','created_date','front_id','results').all()
ну вроде намана
источник

AH

Andrey Hrishchenko in Django [ru] #STAY HOME
Nire
Глянь как joser работает с мылом
сорян, не знаю,  что такое joser)
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Fircak
class ResultSerializer(serializers.Serializer):
   measurement_result = serializers.FloatField()
   measurement_type = serializers.CharField()


class GetMeasurementsSerializer(serializers.Serializer):
   created_date = serializers.DateTimeField()
   front_id = serializers.UUIDField()
   patient__first_name = serializers.CharField()
   device__id = serializers.IntegerField()
   results = ResultSerializer(many=True)

class GetMeasurements(viewsets.GenericViewSet, mixins.ListModelMixin):
   permission_classes = (AllowAny,)
   serializer_class = GetMeasurementsSerializer
   queryset = DeviceMeasurement.objects.prefetch_related('results').values('device__id',
                                                           'patient__first_name','created_date','front_id','results').all()
у тебя в 'results' только id из MeasurememtResult. ты же .values() юзаешь. Зарубил на корню весь результат prefetch_related()
источник

AD

Alex Dem in Django [ru] #STAY HOME
Andrey Hrishchenko
сорян, не знаю,  что такое joser)
REST implementation of Django authentication system.
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Artem Gubatenko
у тебя в 'results' только id из MeasurememtResult. ты же .values() юзаешь. Зарубил на корню весь результат prefetch_related()
убрать values?
источник

N

Nire in Django [ru] #STAY HOME
Andrey Hrishchenko
сорян, не знаю,  что такое joser)
Ну ты там берешь ключ из ссылки, смотришь на него в базе рефералок, потом пишешь пользователю реферала
источник

AD

Alex Dem in Django [ru] #STAY HOME
набор пресетов для REST auth
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Anton Fircak
убрать values?
да
источник

DT

Dan Tyan in Django [ru] #STAY HOME
и ты бы использовал ModelSerializer
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Dan Tyan
и ты бы использовал ModelSerializer
ок, а как можно избавиться от не полностью обьекта Fk передавать, а только ид? я в вальюз юзаю:device__id
источник

DT

Dan Tyan in Django [ru] #STAY HOME
не понял вопрос
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Dan Tyan
не понял вопрос
мне надо в запросе чтоб не выгребалось все поле типа FK, а только ид из этого FK, я для этого юзал values
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Fircak
ок, а как можно избавиться от не полностью обьекта Fk передавать, а только ид? я в вальюз юзаю:device__id
зря через двойное подчеркивание, наверно 🤔
в модели уже есть device_id

Без select_related они не будет получаться, только с доп запросом (если обратишься к полю)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Anton Fircak
мне надо в запросе чтоб не выгребалось все поле типа FK, а только ид из этого FK, я для этого юзал values
у тебя выгрузятся только связаные записи
источник

AF

Anton Fircak in Django [ru] #STAY HOME
Dan Tyan
у тебя выгрузятся только связаные записи
в общем получилось что-то такое:  "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()
источник

DT

Dan Tyan 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()
ты что то не то делаешь
источник

DT

Dan Tyan in Django [ru] #STAY HOME
по теории в results у тебя должно быть  записи с одинаковым device_id
источник

AF

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

AG

Artem Gubatenko 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()
если тебе все равно что results__measurement_type разный, то
попробуй аннотировать результат аггрегации results__measurement_result, потом order_by по device_id и distinct по нему же
источник