Найти - Пользователи
Полная версия: Django Rest Framework
Начало » Python для новичков » Django Rest Framework
1
DmBand
Здравствуйте. Решил попробовать в 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"
        }
    ]
}

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

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


Где вы, будете раскладывать ключ и значение на правильный формат данных для работа сериализатора.
ntram
VANISHED
doza_and
y_dev
Ведь JSON имеет структуру пара ключ:значение
Это не так. Допустимы и списки и словари.
DmBand
А можно ли сделать, чтобы было:
Сделать можно, только выглядит странно. Может достаточно:
  
[ 
["Регистратура", 1234567],
["Консультация", 1234567]
]
Зачем словарь если можно сделать список? Зачем номер брать в кавычки если это целое число? Зачем обертка с ‘'phone’? Была таблица, и оставляйте таблицу.
DmBand
doza_and
Сделать можно, только выглядит странно. Может достаточно:
Да, вы правы. Так лучше выглядит
doza_and
Зачем обертка с ‘'phone’?
Там более глубокая вложенность, чем я здесь показал. Поэтому, чтобы лучше читалось, сделал эту обертку.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB