передача аргумента в пользовательский метод save () - PullRequest
8 голосов
/ 29 марта 2010

Как передать аргумент в мой пользовательский метод сохранения, сохранив правильные *args, **kwargs для передачи в супер метод? Я пытался что-то вроде:

form.save(my_value)

и

def save(self, my_value=None, *args, **kwargs):

   super(MyModel, self).save(*args, **kwargs)

   print my_value

Но, похоже, это не работает. Что я делаю не так?

Редактировать: я нашел этот пример (см. Последнее сообщение для передачи 'reorder'): http://groups.google.com/group/django-users/browse_thread/thread/b285698ea3cabfc9/6ce8a4517875cb40?lnk=raot

По сути, это то, что я пытаюсь сделать, но, по некоторым причинам, my_value считается неожиданным аргументом.

Ответы [ 2 ]

20 голосов
/ 29 марта 2010

Аргументы ключевого слова должны следовать позиционным аргументам. Попробуйте вместо этого:

def save(self, my_value, *args, **kwargs):
    ....

или

def save(self, *args, **kwargs):
    my_value = kwargs.pop('my_value', None)
3 голосов
/ 29 августа 2012

Вы можете попробовать следующее.

Переопределить метод сохранения как:

def save(self, my_val, *args, **kwargs):
    print my_val
    # do_something here
    return super(MyModel, self).save(*args, **kwargs)

При вызове метода сохранения как:

MyModel.save(my_val="fooooo")

это напечатает my_val и сохранит его.

...