drf 序列化器

drf序列化枚举了类字段

drf序列化外建关联字段

models.py
class ChargePolicyDetail(models.Model):
    PURPOSE = c_models.Apartment.PURPOSE
    CATEGORY = c_models.Apartment.CATEGORY

    name = models.CharField(
        max_length=30,
        blank=True,
        null=True,
        verbose_name="收费明细"
    )
    effect_start_date = models.DateField(
        default=datetime.date.today(),
        blank=True, null=True,
        verbose_name="生效开始时间")
    effect_end_date = models.DateField(
        blank=True, null=True,
        verbose_name="生效结束时间")
    # 过滤项
    purposes = models.CharField(
        max_length=30,
        choices=PURPOSE,
        blank=True,
        null=True,
        verbose_name="建筑用途")
    category = models.CharField(
        max_length=30,
        choices=CATEGORY,
        blank=True,
        null=True,
        verbose_name="户型")
    has_evl = models.BooleanField(
        blank=True,
        null=True,
        verbose_name="有无电梯"
    )
    property_rights = models.CharField(
        max_length=30,
        blank=True,
        null=True,
        choices=(("0", "民用"), ("1", "公用")),
        verbose_name="产权性质"
    )
    formula = models.CharField(
        max_length=30,
        blank=True,
        null=True,
        verbose_name="计算公式"
    )
    cycle = models.CharField(
        max_length=8,
        choices=(
            ("1", "每年"),
            ("2", "每半年"),
            ("3", "每月"),
        ),
        blank=True,
        null=True,
        verbose_name="生成周期"
    )

    charge_policy = models.ForeignKey(
        to=ChargePolicy,
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        verbose_name="对应收费规则")
    policy = models.ForeignKey(
        to=ChargeCategory,
        blank=True, null=True,
        on_delete=models.CASCADE,
        verbose_name="对应规则类目"
    )

    updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
    created_at = models.DateTimeField(
        default=timezone.now,
        editable=False,
        blank=True,
        null=True,
        verbose_name="创建时间")

    class Meta:
        verbose_name = "收费规则"


class ChargeCategory(models.Model):
    name = models.CharField(max_length=16, blank=True, null=True, unique=True, verbose_name="类目名称")


serializers.py
class ChargePolicyDetailSerializer(serializers.ModelSerializer):
    """收费规则明细序列化"""

    policy = serializers.CharField(source="policy.name")
    purposes = serializers.CharField(source='get_purposes_display')
    category = serializers.CharField(source='get_category_display')
    property_rights = serializers.CharField(source='get_property_rights_display')
    cycle = serializers.CharField(source='get_cycle_display')

    class Meta:
        model = models.ChargePolicyDetail
        exclude = ("updated_at", "created_at")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值