2010-01-20 10 views
1

J'essaie de faire une application d'administration de garde d'enfants avec Django mais j'ai quelques problèmes avec le code de paiement.Aide à la création de modèle pour l'application Django

Chaque enfant doit payer chaque mois 10 fois par an. Ces paiements ont quelques particularités:

  • Certains enfants pourraient payer une somme d'argent différente en fonction de la situation économique des parents.

  • Le montant des paiements pourrait changer au cours de l'année.

  • Les paiements pourraient être payés dans différentes occasions.

  • Les ateliers et les aliments sont ajoutés à la valeur totale du paiement (ils sont facultatifs).

J'ai un problème pour modéliser cette application. Je pensais à la création d'un modèle d'enfant et un modèle de paiement:

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()` 

Supposons que je veux savoir à une date donnée comment kid beaucoup de moneya (les parents) doivent payer. Je ne sais pas comment résoudre le problème des valeurs changeantes (les valeurs de nourriture et d'atelier pourraient également changer au cours de l'année).

J'espère que vous m'avez compris, merci. mF.

+3

Quelqu'un d'autre WTF lors de la lecture du titre? –

+2

En effet. J'ai aussi WTF'd. –

+1

Vous devriez envisager de fixer le titre de cette question à quelque chose d'un peu plus spécifique, comme "besoin d'aide pour créer un modèle pour l'application Django", et peut-être ajouter une balise orientée objet. À première vue, cette question ressemblait à du spam. :-) –

Répondre

0

Peu importe la façon dont vos modèles finaux ressemblera, en supposant que vous garderez modèle de paiement, vous pouvez y ajouter deux champs:

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

Ensuite, pour obtenir des paiements en retard, vous serez en mesure de faire une requête:

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

Avec ces objets de paiement, vous serez en mesure de calculer le montant exact.

0

Je voudrais que le paiement soit calculé sur les attributs de l'enfant, donc en mettant à jour l'enfant que le paiement changerait. Le paiement ne serait pas une entrée dans la base de données jusqu'à ce qu'il ait été payé, le paiement serait calculé chaque fois que l'utilisateur le demande.

class Child(object): 
    def __init__(self,income,paydate,meals=False,workshops=False): 
     self.income = income 
     self.paydate = paydate 
     ... 

Je voudrais aussi avoir un modèle de règles de prix qui, en combinaison avec l'objet enfant, vous donnerait le montant du paiement. Une fois de plus, la mise à jour de la règle de prix changerait le paiement.

class PricingRules(object): 
    def __init__(self,income_scale,paydate,meal_price,workshop_price,num_payments): 
     ... 

Je voudrais éviter d'avoir un objet PricingRules pour chaque enfant. Il y aurait alors l'objet de paiement

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

J'ai évité montrant un code spécifique à l'ORM utilisé, je crois que la conception devrait se suffire à lui-même, et je l'aime aussi garder la possibilité ouverte utiliser les objets sans l'ORM. Utiliser des constructeurs est aussi mon style personnel, j'aime savoir que lorsqu'un objet est créé à partir d'une classe, il sera dans un état bien défini et stable. Sans plus de détails concernant la logique métier, j'ai plus de questions que de réponses au-delà de ce point.

Questions connexes