2010-02-26 5 views
1

С моделями Django, я хочу, чтобы достичь этого:Дополнительный параметр для моделей 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 

И в то время как я Foo тару необходимо передать такие как

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

Как это можно сделать? Я также открыты для любых других предложений :)

Благодаря

ответ

9

Вы можете определить непостоянные поля в модели.

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

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

В качестве альтернативы, вы можете сделать:

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

def save(self, *args, **kwargs): 
    ... 
    print kwargs["extra_param"] 
Смежные вопросы