帮助创建Django应用程序的模型

时间:2010-01-20 18:49:44

标签: python django models

我正在尝试使用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的。

2 个答案:

答案 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的情况下使用对象的可能性。使用构造函数也是我个人的风格,我喜欢知道当一个对象是从一个类创建的时候,它将处于一个定义良好且稳定的状态。如果没有关于业务逻辑的更多细节,除了这一点,我还有更多的问题而不是答案。