drf模型序列化添加自定义字段

模型类

class Tobacco(models.Model):
    product_name = models.CharField(max_length=78, verbose_name="烟草名称", help_text="烟草名称")
    number = models.IntegerField(verbose_name="货物数量", help_text="货物数量")
    price = models.IntegerField(verbose_name="货物价格", help_text="货物价格")
    old_price = models.IntegerField(verbose_name="货物旧价格", help_text="货物旧价格")
    factory_simple_name = models.CharField(max_length=32, verbose_name="所属公司", help_text="所属公司")
    charge = models.ForeignKey(TobaccoCharge, on_delete=models.CASCADE)
    brand_name = models.CharField(max_length=32, verbose_name="业态", help_text="业态")
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间", help_text="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间", help_text="更新时间")
    class Meta:
        db_table = "tobacco"
        app_label = "goods"
    def __str__(self):
        return self.product_name

序列化类

#序列化模版
class SerTobacco(serializers.ModelSerializer):
	# 自定义字段
    prduct_name_num = serializers.SerializerMethodField()

    class Meta:
        model = Tobacco
        # fields = "__all__"
        # 指定返回字段
        fields = ["id", "product_name", "number", "prduct_name_num"]

        # 需要剔除的字段
        # exclude =[""]
	# 自定义字段返回值 : get_自定义字段
    def get_prduct_name_num(self, obj):
        return obj.product_name + f"的数量是{str(obj.number)}"

view视图

class SearchTobaccoList(APIView):
    """
    列表查询
    """

    def get(self, request, *args, **kwargs):
        all_data = Tobacco.objects.all()
       	# 序列化,instance=序列化对象,many-多个对象
        ser = SerTobacco(instance=all_data, many=True)
        return Response(ser.data)

返回值

[
    {
        "id": 1,
        "product_name": "黄金叶(天叶中支)",
        "number": 493,
        "prduct_name_num": "黄金叶(天叶中支)的数量是493"
    },
    {
        "id": 2,
        "product_name": "黄鹤楼(1916中支)",
        "number": 441,
        "prduct_name_num": "黄鹤楼(1916中支)的数量是441"
    }
]
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值