我使用PasswordInput来获取可选属性。
password = models.CharField(_('Site Password'), max_length=128,
blank=True, null=True)
from django.forms import PasswordInput
...
class Meta:
model = ...
widgets = {
'password': PasswordInput(),
}
哪个按预期工作。但是,使用此小部件意味着一旦设置了密码,就无法清除此输入!
我希望有类似AdminFileWidget的东西,可以通过选择' clear'来清除图像/文件。复选框。
其他选项是添加额外的' clear_password'字段到ModelForm。
clear_password = forms.BooleanField(label=_('Clear'), initial=False,
required=False)
清除保存方法的密码:
def save(self, commit=True):
...
if self.cleaned_data['clear_password']:
obj.password = None
else:
# Save the provided password in hashed format
obj.password = make_password(self.cleaned_data['password'])
这也有效。但我希望有一个更清洁的解决方案......
我看了一下django.forms.widgets.ClearableFileInput ..但对于像我这样的新手来说这太复杂了:-(。
任何帮助将不胜感激。非常感谢
答案 0 :(得分:0)
您可以通过将null值传递给value属性来清除表单的值。
类似的东西:
from django.forms import PasswordInput
from models import YourModel
password = forms.PasswordInput(attrs={'value': ''})
class Meta:
model = YourModel