2012-09-17 6 views
1

J'ai une table pour CLIENT et une table pour CUSTOMER_PAYMENT (avec attributs client, montant, date d'échéance et payée). Je veux quand j'insère une valeur dans CUSTOMER, les valeurs dans CUSTOMER_PAYMENT seront générées automatiquement. Il est comme une information de facturation mensuelledjango: insérer automatiquement des lignes dans la base de données

Lors de l'insertion client A CLIENT

CUSTOMER_PAYMENT 
____________________________________ 
|CUSTOMER|AMOUNT|  DUE | PAID | 
| A  | 100 | 2011-01-15| False | 
| A  | 100 | 2011-02-15| False | 
| A  | 100 | 2011-03-15| False | 

Comment cela se fait?

Il n'y a pas de déclencheur dans Django. J'ai essayé de Google mais je ne peux pas trouver comment.

+0

Comment savez-vous ce que les montants et les dates d'échéance pour créer pour chaque client? – eggyal

+0

J'ai une table différente, disons PLAN où un client a une clé étrangère dessus. Eh bien, ce n'est pas grave pour le moment. Je travaille toujours sur l'insertion automatique des lignes dans une table différente – skinnyas123

Répondre

1

Il y a deux façons:

  • écrire du code dans le signal de post_save
  • Ecraser méthode d'enregistrement()

Signaux:

post_save.connect(CUSTOMER_post_save, sender = CUSTOMER , 
       instance = instance, create = create) 

def CUSTOMER_post_save(sender, instance, **kwargs): 
     if create: 
      cd = CUSTOMER_PAYMENT() 
      cd.amount = .... 
      cd.save() 

Écrasement:

class CUSTOMER(model.Model): 
    ...  
    def save(self, *args, **kwargs): 
     is_new = self.pk is None 
     super(yourModel, self).save(*args, **kwargs) 
     if is_new: 
      cd = CUSTOMER_PAYMENT() 
      cd.amount = .... 
      cd.save() 
+0

Merci beaucoup! :RÉ – skinnyas123

Questions connexes