2010-02-26 9 views
1

Avec les modèles Django, je veux y parvenir:Paramètre supplémentaire pour les modèles Django

class Foo(models.Model): 
    name = models.CharField(max_length=50) 

    #wrapping the save function, including extra tasks 
    def save(self, *args, **kwargs): 
     super(Foo, self).save(*args, **kwargs) 

      if extra_param: 
      ...do task 1 
     else: 
      ...do task 2 

Et pendant que je veux Foo mise en caisse de passer, comme

Foo(name="Bill Gates",extra_param=True).save() # now triggers the task 1 
Foo(name="Bill Gates").save() # now triggers the task 2 

Comment cela peut-il être fait? Je suis également ouvert à d'autres suggestions :)

Merci

Répondre

9

Vous pouvez définir des champs non persistants dans votre modèle.

class Foo(models.Model): 
    name = models.CharField(max_length=50) 
    extra_param = False 

def save(self, *args, **kwargs): 
    ... 
    print self.extra_param 

Vous pouvez faire:

Foo(name="Bill Gates").save(extra_param=True) 

def save(self, *args, **kwargs): 
    ... 
    print kwargs["extra_param"]