Django后台展示计算后的数值以及排序、字段检索

modles.py文件中定义数据库字段(计算得出的值并不会存入到数据库当中,每次页面刷新都会重新计算)

from django.db import models
from database.base_model import BaseModel
import datetime
from django.db.models.signals import post_save
from django.dispatch import receiver


class SubscriberSheet(BaseModel):
    '''资方表格类:汇投/多多米'''
    PRODUCT = [("先息后本", "先息后本"), ("等本等息", "等本等息")]
    PLATFORM = [("汇投", "汇投"), ("多多米", "多多米")]
    order_date = models.DateField(verbose_name="签单日")
    platform = models.CharField(max_length=10, verbose_name="平台", choices=PLATFORM)
    user_name = models.CharField(max_length=20, verbose_name="客户")
    loan_months = models.IntegerField(default=0, verbose_name="借款期限(月)")
    loan_date = models.DateField(verbose_name="项目实际启动日/放款日")
    product = models.CharField(max_length=10, default="先息后本", verbose_name="产品", choices=PRODUCT)
    capital = models.IntegerField(default=0, verbose_name="投资本金(元)")
    year_rate = models.FloatField(default=0, verbose_name="年化利率")
    month_rate = models.FloatField(default=0, verbose_name="月利率")
    service_year_rate = models.FloatField(default=0, verbose_name="年化服务费率")
    service_month_rate = models.FloatField(default=0, verbose_name="月化服务费率")

    def cal_capital_date(self):
        # create_subscriber_plan.send(self.__class__)  # 发送信号
        day = int(self.loan_date.strftime("%d"))
        month = int(self.loan_date.strftime("%m"))
        year = int(self.loan_date.strftime("%Y"))
        for i in range(self.loan_months + 1):
            if i == self.loan_months:
                capital_back_date = datetime.date(year, month, day - 1)
                return capital_back_date
            month += 1
            if month > 12:
                year += 1
                month -= 12

    cal_capital_date.short_description = "还本日"
    capital_back_date = property(cal_capital_date)

    class Meta:
        db_table = "SubscriberTable"
        verbose_name = "资方表格"
        verbose_name_plural = "资方表格"

admin.py中的list_display定义需要展示的字段,ordering为排序方式,search_fields为可检索字段,date_hierarchy会在 change list 页的顶部增加了基于日期的分层导航功能。 在最顶层,显示所有可用年份。然后可钻取到月份,最终到天。

class SubscriberInfoAdmin(admin.ModelAdmin):
    inlines = [SubscriberPlanInline]  # 让关联的还款计划在此表格中显示
    list_display = ["user_name", "id", "order_date", "platform", "loan_months", "loan_date", "product",
                    "capital_back_date", "capital", "year_rate", "month_rate", "service_year_rate",
                    "service_month_rate"]
    ordering = ["id", ]
    search_fields = ["user_name", "platform", "product"]
    date_hierarchy = "order_date"
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值