исключая поле в форме джанго [дубликат]

6
задан codingjoe 2 May 2013 в 12:49
поделиться

2 ответа

Вы не сможете это сделать, если используете 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 
10
ответ дан Akshar Raaj 25 August 2018 в 20:46
поделиться

Я думаю, это может помочь вам ...

при повторении поля формы в шаблоне, напишите

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/

0
ответ дан user2404093 25 August 2018 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: