Вы не сможете это сделать, если используете UserChangeForm
.
См. это https://github.com/django/django/blob/master/django/contrib /auth/forms.py.
Вы заметите, что UserChangeForm
на этой странице явно определяет username
и password
. Эти поля присутствуют в переменной declared_fields
в форме.
exclude
и fields
работают только с полями, взятыми из model
, определенных в Meta
. Если вы явно определяете какое-либо поле i.e declared_fields
, они будут присутствовать в форме, даже если они были исключены с помощью exclude
. Итак, эти поля показывают вам.
Чтобы узнать больше об этой проверке __new__
из ModelFormMetaclass
в https://github.com/django/django/blob/master/django/ forms / models.py
Обход проблемы:
Не используйте UserChangeForm и читайте его код. Это не дает вам многого. Вы можете написать свою собственную форму, которая простирается только от ModelForm
и устанавливает Meta Model
как пользователя. Скопируйте части из UserChangeForm
в вашу форму.
class UserForm(forms.ModelForm):
class Meta:
model = User
def __init__(self, *args, **kwargs):
#copy any functionality you want form UserChangeForm
def clean_password(self):
#copy functionality provided by UserChangeForm
Я думаю, это может помочь вам ...
при повторении поля формы в шаблоне, напишите
if for field in UserChangeFormObject:
{% ifnotequal field.lable password %}
#process your form field here
{% endifnotequal%}
Подробнее здесь https: // docs. djangoproject.com/en/1.6/releases/1.2/