Уведомления

Группа в Telegram: @pythonsu

#1 Июль 23, 2022 10:47:53

DmBand
Зарегистрирован: 2021-02-03
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest Framework

Здравствуйте. Решил попробовать в DRF.
У меня есть модель типа:

 class PhoneNumber(models.Model):
    """ Номер телефона """
    name = models.CharField(
        max_length=30,
        verbose_name='имя',
    )
    number = models.CharField(
        max_length=50, 
        verbose_name='телефон',
    )
    polyclinic = models.ForeignKey(
        Polyclinic, 
        on_delete=models.CASCADE, 
        related_name='phone',
    )

После сериализации у меня есть такой JSON:
 {
    "phone": [
        {
            "name": "Регистратура",
            "number": "1234567"
        },
        {
            "name": "Консультация",
            "number": "1234567"
        }
    ]
}

А можно ли сделать, чтобы было:
 {
    "phone": [
        {
            "Регистратура": "1234567"
        },
        {
            "Консультация": "1234567"
        }
    ]
}

Т.е., чтобы в качестве ключа использовалось не имя поля в модели, а его значение.

Офлайн

#2 Июль 24, 2022 15:11:24

y_dev
Зарегистрирован: 2022-07-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest Framework

Теоретически, с точки зрения программирования и данных такой формат неправилен.
Ведь JSON имеет структуру пара ключ:значение, где в общем смысле это равносильно название_переменной:ее значение.

Но если вам все таки хочется сделать так, то переопределите метод to_internal_value вашего сериализатора.
Ссылка на документацию


Где вы, будете раскладывать ключ и значение на правильный формат данных для работа сериализатора.

Офлайн

#3 Июль 24, 2022 22:14:59

ntram
Зарегистрирован: 2022-06-19
Сообщения: 75
Репутация: +  3  -
Профиль   Отправить e-mail  

Django Rest Framework

VANISHED

Отредактировано ntram (Окт. 13, 2022 15:55:28)

Офлайн

#4 Июль 25, 2022 22:56:42

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Django Rest Framework

y_dev
Ведь JSON имеет структуру пара ключ:значение
Это не так. Допустимы и списки и словари.
DmBand
А можно ли сделать, чтобы было:
Сделать можно, только выглядит странно. Может достаточно:
  
[ 
["Регистратура", 1234567],
["Консультация", 1234567]
]
Зачем словарь если можно сделать список? Зачем номер брать в кавычки если это целое число? Зачем обертка с ‘'phone’? Была таблица, и оставляйте таблицу.



Отредактировано doza_and (Июль 25, 2022 22:58:17)

Офлайн

#5 Июль 26, 2022 22:56:19

DmBand
Зарегистрирован: 2021-02-03
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest Framework

doza_and
Сделать можно, только выглядит странно. Может достаточно:
Да, вы правы. Так лучше выглядит
doza_and
Зачем обертка с ‘'phone’?
Там более глубокая вложенность, чем я здесь показал. Поэтому, чтобы лучше читалось, сделал эту обертку.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version