2014-11-16 3 views
3

내가 장고 관리자에서 사용자 지정 양식을 추가하려면 아래 코드를 사용하여 양식을 사용하여장고에서 사용자 지정 __init__ 관리

def __init__(self, author, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.author = author 

:

class MyAdmin(admin.ModelAdmin): 
    form = MyForm 

그러나, 형식은 오버라이드 (override) 생성자가 관리자의 현재 사용자를 양식 생성자에게 전달하려면 어떻게해야합니까?

답변

3
이처럼 MyAdmin 클래스를 변경

:

class MyAdmin(admin.ModelAdmin): 
    form = MyForm 

    def get_form(self, request, **kwargs): 
     form = super(MyAdmin, self).get_form(request, **kwargs) 
     form.current_user = request.user 
     return form 

이제 self.current_user에 액세스하여 forms.ModelForm에 현재 사용자에 액세스 할 수 있습니다.

def __init__(self, author, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.author = author 
    # access to current user by self.current_user 
+0

그런데 __init__ 메서드에서 "author"매개 변수를 제거해야합니다. 그렇지 않으면 오류가 발생합니다. 매개 변수를 유지하고 싶습니다. – Ivan

+0

@Ivan'def get_form'에서'author__' 매개 변수를'__init__' 형태로 전달할 수 있습니다 –

+0

'get_form'의'__init__' 메소드에'author'를 어떻게 추가하는지 예제를 추가 할 수 있습니까? – Ivan

관련 문제