Django - 当视图中的值设置为任何值时,将表单字段更改为只读

时间:2017-04-04 23:34:26

标签: django django-forms

在我的view.py中,我有一个变量 - 例如' email'。在我的forms.py中,我有一个电子邮件字段 - 例如:

email = forms.EmailField(label="Email adress")

我想将其更改为:

email = forms.EmailField(label="Email adress", widget=forms.TextInput(attrs={'readonly': 'readonly'}))

当我的view.py中的电子邮件变量被填充时(从None到任何值)。默认情况下,电子邮件设置为“无”我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用Form init()设置属性:

def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    # Either pass as kwarg form = MyForm(email='some@email.com')
    email = kwargs.get('email', None)
    # Or as initial value form = MyForm(initial={'email': 'some@email.com'})
    email = self.fields['email'].initial

    if email is not None:
        self.fields['email'].attrs.update({'readonly': 'readonly'})
        # or you could potentially do this, depending on what you're trying to achieve
        self.fields['email'].disabled = True