在Django中禁止编辑字段
我有一个表单,其中有几个字段,我想向用户显示,但阻止他们编辑(不应该是编辑框)。在Django中禁止编辑字段
我的表单类看起来像这样,我使用字段meta来自动定义它们。我正在寻求防止用户在注册后更改他们的用户名和电子邮件。
class UserEditForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password')
问题In a Django form, how do I make a field readonly (or disabled) so that it cannot be edited? 不提供答案,如果字段自动使用元确定该怎么做。
我已经试过
disabled = ('username', 'email',)
和其他一些选择,但似乎没有任何工作。 我正在寻求防止某人更改表单并提交它(以及数据被更改),因为可以完成前面提出的问题。
[编辑]:使用Django 1.11
你可以设置你需要在表格后的字段disabled
财产被初始化:
class UserEditForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password')
def __init__(self, *args, **kwargs):
super(UserEditForm, self).__init__(*args, **kwargs)
self.fields['username'].disabled = True
self.fields['email'].disabled = True
是的,这也是我的想法。 'disabled'变量是一个'Field'布尔参数,而不是像'fields'这样的列表定义。 – OptimusCrime
正是我在找的东西。谢谢,非常有帮助。 字段处于编辑状态,但被禁用。还没有测试过是否会阻止它们被黑客入侵,但是从Django文档看来,它们看起来会被忽略。 – user8734958
你用什么版本的Django的?编辑:如果你使用pre 1.9,那么你链接的答案应该工作得很好。 – OptimusCrime
我使用1.11最新 – user8734958
你尝试过[Readonly fields on Form/Modelform](https://djangosnippets.org/snippets/1340/)的片段吗? –