2010-07-20 3 views
2

Django에서 나는 어떤 필드를 제거하고 싶거나 좀 더 정확한 필드를 가지고 싶습니다. ModelForm 폼에서 새로운 폼을 파생 시키려고합니다. 물론 확실한 방법은 (기본 양식 django.contrib.auth.forms에서이다)을 수행하는 것입니다 :양식의 하위 클래스에서 ModelForm의 선언 된 필드를 제외하려면 어떻게해야합니까?

class MyUserChangeForm(UserChangeForm): 
    class Meta(UserChangeForm.Meta): 
    fields = ('first_name', 'last_name', 'email') 

을하지만 추가/결과 형태로도 username 필드를 유지으로이 작동하지 않습니다. 이 필드는 UserChangeForm에 명시 적으로 선언되었습니다. 심지어 usernameexclude 속성을 추가해도 도움이되지 않습니다.

제외 할 적절한 방법이 있습니까? 누락되었습니다. 이거 버그 야? 몇 가지 해결 방법이 있습니까?

답변

3

이 시도 : 생성 될 때

class MyUserChangeForm(UserChangeForm): 

    def __init__(self, *args, **kwargs): 
    super(MyUserChangeForm, self).__init__(*args, **kwargs) 
    self.fields.pop('username') 

    class Meta(UserChangeForm.Meta): 
    fields = ('first_name', 'last_name', 'email') 

이 동적 양식에서 필드를 제거합니다.

1

그것은 (아직 계정에 exclude을 복용 실종)을 (일반) 해결 방법을 것입니다

def __init__(self, *args, **kwargs): 
    super(UserChangeForm, self).__init__(*args, **kwargs) 
    for field in list(self.fields): 
    if field not in self._meta.fields: 
     del self.fields[field] 

그러나 이것은 나에게 벌레처럼 냄새가 난다.

+0

[장고 버그] (http://code.djangoproject.com/ticket/13971)를 열었습니다. – Mitar

관련 문제