1

Django で保育管理アプリを作ろうとしていますが、支払いコードに問題があります。

各子供は毎月 1 年に 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 モデルを維持すると仮定すると、それに 2 つのフィールドを追加できます。

    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 に答える