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"