Как произвольно вложить некоторые данные в сериализатор структуры отдыха DjangoPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как произвольно вложить некоторые данные в сериализатор структуры отдыха Django

Сообщение Anonymous »

Существующий клиент уже отправляет данные в такой структуре, как…

Код: Выделить всё

{
"hive_metadata": {"name": "hive name"},
"bees": [{"name": "bee 1", "name": "bee 2", ...}]
}
Для таких моделей, как:

Код: Выделить всё

class Hive(models.Model):
name = models.CharField(max_length=32, help_text="name")

class Bee(models.Model):
name = models.CharField(max_length=32, help_text="name")
hive = models.ForeignKey(
Hive, help_text="The Hive associated with this Bee", on_delete=models.CASCADE
)
Код, который делает это возможным, вручную перебирает входящие данные. Я хотел бы переписать его, используя сериализатор структуры отдыха django; однако тот факт, что hive_metadata сам по себе является вложенным, до сих пор ставит меня в тупик.
Если я напишу

Код: Выделить всё

class BeesSerializer(ModelSerializer):
class Meta:
model = models.Bee
fields = ("name",)

class PopulatedHiveSerializer(ModelSerializer):
bees = BeesSerializer(many=True, source="bee_set")
class Meta:
model = models.Hive
fields = ("name","bees",)
будет создан

Код: Выделить всё

{
"name": "hive name",
"bees": [{"name": "bee 1", "name": "bee 2", ...}]
}
достаточно легко. Я надеялся, что смогу решить эту проблему с помощью ссылки на субсериализатор, что-то вроде

Код: Выделить всё

class HiveMetaDataSerializer(ModelSerializer):
class Meta:
model = models.Hive
fields = ("name",)

class PopulatedHiveSerializer(ModelSerializer):
bees = BeesSerializer(many=True, source="bee_set")
hive_metadata = HiveMetaDataSerializer(source=???)
class Meta:
model = models.Hive
fields = ("hive_metadata","bees",)
но я не могу понять, что поместить в «источник», чтобы один и тот же объект передавался через внешний сериализатор во внутренний.
Итак, есть ли способ сделать это с помощью сериализатора Django rest framework?

Подробнее здесь: https://stackoverflow.com/questions/790 ... serializer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»