【问题标题】:Django : list into serializerDjango:列出序列化程序
【发布时间】:2023-03-16 18:23:01
【问题描述】:

我想用 Django 创建 REST API。我听说过 Django Rest Framework 中的序列化程序:from rest_framework import serializers。 接下来,我必须创建某种模型。 我想创建这种类型的 JSON 响应:

{
  id: "489",
  state: "PREPARATION",
  orderDay: "2020-06-24",
  deliveryDay: "2020-06-30",
  deliveryAddress: "Place des Fêtes",
  comment: "", // facultatif
  products: [
    {
      id: "420",
      name: "Côte de boeuf",
      price: "28.90",
      oldPrice: "", // facultatif
      unit: "KG",
      categoryId: "69666",
      byProducts: [
        {
          id: "420161",
          name: "unité",
          quantity: 42,
        },
      ],
    },
  ],
}

所以我必须在我的序列化程序模型中添加一个列表(productsbyProduct)。 我可以用序列化程序做到这一点吗?如何做到? 提前致谢

【问题讨论】:

  • 你有没有尝试过的模型或序列化器?
  • 尝试按照DRF 教程进行操作,它是一个出色的软件包,可以提供您正在寻找的内容。
  • 看看this

标签: python django api django-rest-framework serialization


【解决方案1】:

你可以通过实现这样的东西来实现这样的数据结构:

from rest_framework import serializers


class ByProductSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    name = serializers.CharField()
    quantity = serializers.IntegerField()


class ProductSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    name = serializers.CharField()
    price = serializers.DecimalField(decimal_places=2, max_digits=5)
    oldPrice = serializers.DecimalField(decimal_places=2, max_digits=5)
    unit = serializers.CharField()
    categoryId = serializers.IntegerField()
    byProducts = ByProductSerializer(many=True)


class MainSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    state = serializers.CharField()
    orderDay = serializers.DateField()
    deliveryDay = serializers.DateField()
    deliveryAddress = serializers.DateField()
    comment = serializers.DateField()
    products = ProductSerializer(many=True)

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2016-12-15
    • 2018-05-20
    • 2016-11-28
    相关资源
    最近更新 更多