1

我正在尝试使用 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()`

假设我想知道在给定日期孩子(父母)需要支付多少钱。我不知道如何解决不断变化的价值观问题(食物和车间的价值观也可能在一年中发生变化)。

希望你能理解我,谢谢。MF。

4

2 回答 2

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):
      ...

我会避免为每个孩子设置一个 PricingRules 对象。然后会有 Payment 对象

class Payment(object):
   def __init__(self,amount,date_paid):
      ...

我已经避免显示任何特定于正在使用的 ORM 的代码,我相信设计应该独立存在,并且我还希望保持开放使用没有 ORM 的对象的可能性。使用构造函数也是我的个人风格,我喜欢知道当一个对象从一个类创建时,它会处于定义良好且稳定的状态。如果没有关于业务逻辑的更多细节,我有更多的问题而不是超出这一点的答案。

于 2010-01-21T00:42:53.677 回答
0

无论您的最终模型如何,假设您将保留付款模型,您可以添加两个字段:

    payment_date = model.DateField()
    already_paid = models.BooleanField()

然后,要获得逾期付款,您将能够进行查询:

    Payment.objects.filter(payment_date__lte=datetime.date.today(), already_paid=False)

有了这些 Payment 对象,您将能够计算出确切的金额。

于 2010-01-21T00:10:00.000 回答