Я использую Django сериализатор структуры остатка для возврата планов для мобильного приложения. На данный момент мой ответ сериализатора выглядит следующим образом:
[
{
"id": 1,
"nome": "Test",
"localizacao": "Example - MG",
"instituicao": "Example",
"modalidade": "Example",
"categoria": "Category 1",
"frequencia_semanal": 1,
"carga_horaria": 2,
"quantidade_alunos": 2,
"valor_unitario": "12.00",
"taxa_matricula": "12.00",
"informacoes_adicionais": ""
}
]
Мне нужно разделить планы по категориям, поэтому структура ответа должна выглядеть следующим образом:
[
"Category 1": [
{
"id": 1,
"nome": "Test",
"localizacao": "Example",
"instituicao": "Example",
"modalidade": "Example",
"frequencia_semanal": 1,
"carga_horaria": 2,
"quantidade_alunos": 2,
"valor_unitario": "12.00",
"taxa_matricula": "12.00",
"informacoes_adicionais": ""
}
]
]
Значение "категорий" должно быть ключами, и все ключи, относящиеся к этой категории, должны содержаться в ключе.
есть мой models.py
class Plano(models.Model):
PUBLICO_ALVO_MENORES = 1
PUBLICO_ALVO_ADOLESCENTES = 2
PUBLICO_ALVO_ADULTOS = 3
PUBLICO_ALVO_TODOS = 4
PUBLICO_ALVO_CHOICES = (
(PUBLICO_ALVO_MENORES, 'Menores'),
(PUBLICO_ALVO_ADOLESCENTES, 'Adolecentes'),
(PUBLICO_ALVO_ADULTOS, 'Adultos'),
(PUBLICO_ALVO_TODOS, 'Todas as idades'),
)
nome = models.CharField(max_length=200)
localizacao = models.ForeignKey('Localizacao', on_delete=models.PROTECT)
instituicao = models.ForeignKey('Instituicao', null=True, on_delete=models.PROTECT)
modalidade = models.ForeignKey('PlanoModalidade', verbose_name='Modalidades', on_delete=models.PROTECT)
categoria = models.ForeignKey('PlanoCategoria', verbose_name='Categorias', on_delete=models.PROTECT)
publico_alvo = models.SmallIntegerField(choices=PUBLICO_ALVO_CHOICES, null=True)
frequencia_semanal = models.PositiveSmallIntegerField(verbose_name='Frequência semanal')
carga_horaria = models.PositiveSmallIntegerField(verbose_name='Carga horária diária')
quantidade_alunos = models.PositiveSmallIntegerField(verbose_name='Quantidade de alunos')
valor_unitario = models.DecimalField(decimal_places=2, max_digits=18, verbose_name='Valor unitário')
taxa_matricula = models.DecimalField(decimal_places=2, max_digits=18, verbose_name='Taxa matrícula')
informacoes_adicionais = models.TextField(max_length=200, blank=True)
DRF serializers.py
class PlanosSerializer(serializers.ModelSerializer):
categoria = serializers.StringRelatedField()
modalidade = serializers.StringRelatedField()
localizacao = serializers.StringRelatedField()
instituicao = serializers.StringRelatedField()
class Meta:
model = Plano
fields = [
'id', 'nome', 'localizacao', 'instituicao', 'modalidade', 'categoria',
'frequencia_semanal', 'carga_horaria', 'quantidade_alunos', 'valor_unitario',
'taxa_matricula', 'informacoes_adicionais',
]
Пожалуйста, помогите мне, ха-ха.