2010-03-29 5 views
5

올바른 방법으로 전달하기 위해 *args, **kwargs을 유지하면서 사용자 정의 저장 메소드에 인수를 전달하려면 어떻게해야합니까? 내가 좋아하는 뭔가를 시도했다 :사용자 정의 save() 메소드에 인수를 전달합니다.

form.save(my_value) 

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

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

    print my_value 

을하지만이 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 일부 예상치 못한 인수이라고합니다 http://groups.google.com/group/django-users/browse_thread/thread/b285698ea3cabfc9/6ce8a4517875cb40?lnk=raot

이것은 내가 뭘하려고 오전 본질적으로

하지만 my_value :이 예 ('재정렬'을 전달하는, 마지막 메시지 참조) 발견 이유.

+0

저장하라는 주장을 펼칩니다. –

+1

@Beau는 무엇을 의미합니까? – Nikita

답변

14

키워드 인수는 위치 인수에 따라야합니다. 대신이 시도 :

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

또는 :

def save(self, *args, **kwargs): 
    my_value = kwargs.pop('my_value', None) 
+0

트릭을하지 않는 것처럼 보입니다 - 파이썬은 구문 오류라고 말합니다 – Nikita

+0

두 번째 것을 사용 했어야합니다 ... 내 편집 –

+3

+1에 대해'kwargs.pop'을 참조하십시오. –

2

다음을 시도 할 수 있습니다. 다른 이름으로 저장 메소드를 호출에

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과 SA 저장합니다.

관련 문제