我希望用户能够更新其用户名,而不是电子邮件地址。在示例3中,尽管我没有在代码中包含字段电子邮件,但是在运行网站时该字段仍然出现。诚然,该文本框为空白,而在示例1和2中则填充了该文本框。
如何停止显示电子邮件文本框?还是可以锁定它,以便用户无法输入新值?
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email']
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['email']
示例3
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username']
答案 0 :(得分:2)
from django.forms import ModelForm
class UserUpdateForm(ModelForm):
#email = forms.EmailField()
class Meta:
model = User
fields = ['username']
答案 1 :(得分:0)
由于您需要除电子邮件以外的所有其他字段(或至少您仅提及电子邮件作为您要隐藏的字段),也许您可以使用然后排除属性:
from django.forms import ModelForm
class UserUpdateForm(ModelForm):
class Meta:
model = User
exclude = ('email',)
有关更多详细信息,请阅读此doc。
另外,替代方法是禁用字段(未选中):
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField(disabled=True)
class Meta:
model = User
fields = ['username', 'email']
传递disabled=True
仍应呈现该字段,但不能由用户对其进行版本编辑。