# 基金费率表

基金有申购规则和赎回规则之分,其中申购规则是按照购入金额进行计算的,而赎回规则是按照买入天数划分标准进行计算的。 所以我们创建三个表模型,InRule记录申购和买入的起始金额,OutRule记录赎回的规则划分。在FundRate中记录具体的费率标准。

则此时,一个 rate_id 可能对应买入或者卖出两张表的 id。 完整的对应关系变为:

Fund > FundRate O2M
FundRate > **Rule  O2M

这种对应关系我们可以使用sqlalchemy.ext.hybrid包中的@hybrid_property装饰器来定义这种关系。参见此处 (opens new window)

# ChoiceType

使用自定义的ChoiceType,我们除了参照 python - SQLAlchemy - How to make "django choices" using SQLAlchemy? - Stack Overflow (opens new window) 实现自定义的类型之外,还需要注意的是使用flask_migrate生成迁移的时候,如果不修改backend/migrations/下的env.pyscript.py.mako,那么定义是无法使用的。具体参阅:Issue #259 · imoyao/fundmate (opens new window)