我正在尝试使用Django创建一个托儿管理应用程序,但我在付款代码方面遇到了一些问题。
每个孩子每年必须支付10次。这些付款有一些特殊性:
根据父母的经济状况,有些孩子可以支付不同的金额。
付款金额可能会在一年内发生变化。
付款可以在不同的机会支付。
工作坊和食品被添加到付款总额中(它们是可选的)。
我有问题为了建模这个应用程序。我在考虑创建一个孩子模型和支付模型:
class Kid(models.Model):
food = models.BooleanField()
workshop = models.BooleanField()
special_price = models.DecimalField(blank=True)
class Payment(models.Model):
kid = models.ForeignKey(Kid)
date = models.DateField()
amount = models.DecimalField()`
假设我想知道在给定日期,孩子(父母)必须支付多少钱。我不知道如何解决不断变化的价值问题(食品和车间价值也可能在一年内发生变化)。
希望你理解我,谢谢。 μF的。答案 0 :(得分:0)
无论您的最终型号如何,假设您将保留付款模式,您可以添加两个字段:
payment_date = model.DateField()
already_paid = models.BooleanField()
然后,为了获得逾期付款,您将能够进行查询:
Payment.objects.filter(payment_date__lte=datetime.date.today(), already_paid=False)
拥有这些付款对象后,您将能够计算确切金额。
答案 1 :(得分:0)
我会根据孩子的属性计算付款,因此通过更新孩子,付款会发生变化。在付款之前,付款不会是数据库中的条目,每次用户请求时都会计算付款。
class Child(object):
def __init__(self,income,paydate,meals=False,workshops=False):
self.income = income
self.paydate = paydate
...
我还有一个定价规则模型,它与子对象一起为您提供付款金额。再次更新PricingRules会改变付款。
class PricingRules(object):
def __init__(self,income_scale,paydate,meal_price,workshop_price,num_payments):
...
我会避免为每个Child设置一个PricingRules对象。然后会有付款对象
class Payment(object):
def __init__(self,amount,date_paid):
...
我避免显示任何特定于正在使用的ORM的代码,我相信设计应该独立,我也希望保持在没有ORM的情况下使用对象的可能性。使用构造函数也是我个人的风格,我喜欢知道当一个对象是从一个类创建的时候,它将处于一个定义良好且稳定的状态。如果没有关于业务逻辑的更多细节,除了这一点,我还有更多的问题而不是答案。